Size: a a a

2021 March 18

AT

Anton Ternavsky in F# Chat
Или математически выражаясь-поиск изоморфных ориентированных графов вычислений, расположенных в разных местах большого ориентированного графа вычислений?
источник

P

Pavel in F# Chat
Ilya
Да он же не обходит его, а складывает в мапу, которая считает хэши и в его случае - каждого чайлда
Именно
источник

AT

Anton Ternavsky in F# Chat
Ты это делаешь? если это-то есть C*N*Log(N) алгоритм поиска изоморфных подграфов, но только для ориентированных
источник

I

Ilya in F# Chat
Он графы не ищет, но я могу поискать, что за алгоритм?:)
источник

AT

Anton Ternavsky in F# Chat
Хз, официального названия нет(или скорее всего я не знаю),давнее наколеночное изобретение, когда дерево вычислений большой размерности(для комбинаторного перебора параметров индикаторов и торговых стратегий) надо было как-то ужать и лишних вычислений не делать, а решение хотелось бы иметь точное. Скорее всего это не этот сценарий, чел не колется что он хочет сделать
источник

I

Ilya in F# Chat
Pavel я как-то всегда эту проблему решал, складывая под интовыми/лонговыми ключами (обернутыми во избежание в какой-то сингл кейс юнион иногда), которые часть каждого кейса DU, но ¯\_(ツ)_/¯
источник

P

Pavel in F# Chat
Anton Ternavsky
Хз, официального названия нет(или скорее всего я не знаю),давнее наколеночное изобретение, когда дерево вычислений большой размерности(для комбинаторного перебора параметров индикаторов и торговых стратегий) надо было как-то ужать и лишних вычислений не делать, а решение хотелось бы иметь точное. Скорее всего это не этот сценарий, чел не колется что он хочет сделать
Боюсь я не смогу просто и коротко объяснить в какой задаче нужно, но это и не важно. Важно как при мемоизации функции оптимизнуть проверку аргумента (этого дерева) на наличие в кэше
источник

AT

Anton Ternavsky in F# Chat
Pavel
Боюсь я не смогу просто и коротко объяснить в какой задаче нужно, но это и не важно. Важно как при мемоизации функции оптимизнуть проверку аргумента (этого дерева) на наличие в кэше
Ты оптимизируешь дерево вычислений, ища одинаковые поддеревья вычислений(при условии-что функция чистая)?
источник

AT

Anton Ternavsky in F# Chat
Да/нет. Дальше понятно будет, по хз когда накатанной колее решение пойдет или нет.
источник

P

Pavel in F# Chat
Anton Ternavsky
Ты оптимизируешь дерево вычислений, ища одинаковые поддеревья вычислений(при условии-что функция чистая)?
Это тоже есть
источник

AT

Anton Ternavsky in F# Chat
Pavel
Это тоже есть
Функции в дереве вычислений чистые? Если нет-алгоритм бесполезен.
источник

P

Pavel in F# Chat
Но не за счёт поиска одинаковых поддеревьев, для определенных паттернов применяются реврайты
источник

P

Pavel in F# Chat
Функции чистые
источник

AT

Anton Ternavsky in F# Chat
Ну этот алгоритм именно заточен на поиск одинаковых поддеревьев вычислений, и вместо рассчета множества идентичных поддеревьев считаем один раз. В оптимизационных задачах большой размерности на порядки иногда сокращало время, и это без использования других оптимизационных алгоритмов(будь то генетический или какой нибудь на градиентном спуске)
источник

P

Pavel in F# Chat
Хотя одинаковые поддеревья тоже надо искать, но вопрос исходный был не в связи с этим)
источник

AT

Anton Ternavsky in F# Chat
Pavel
Хотя одинаковые поддеревья тоже надо искать, но вопрос исходный был не в связи с этим)
Ну про реврайты я вообще не понял кстати о чем речь
источник

P

Pavel in F# Chat
Anton Ternavsky
Ну про реврайты я вообще не понял кстати о чем речь
Кусок АСТ определенного вида заменяем более простым / эффективным
источник

AT

Anton Ternavsky in F# Chat
Pavel
Кусок АСТ определенного вида заменяем более простым / эффективным
Понял.
источник

SN

Shub Niggurath in F# Chat
S B
А хули там отлаживаться? В нужном месте написать fun x -> мойМетод x?
Щас бы править код чисто чтобы отладчик был в состоянии поставить точку останова. А потом вертать все обратно вручную, чтобы случайно не реверснуть нужные изменения. Хороший план, насколько я понял. Надежный, как швейцарские часы
источник

AT

Anton Ternavsky in F# Chat
Pavel Ну выше тебе сказали-оверрайдь GetHashCode()  и убедись, что у тебя нет конфликтов по хешкоду.
источник