Size: a a a

2020 August 09

a

anton in Lisp Forever
источник

a

akater in Lisp Forever
Vλadimir (Hawthorne the Toolmaker)
Хочу поиграть в (де)генеративное ИЗО, есть вопрос. Как посоветуете задавать композицию элементарных функций (+/*/sin/tan/полиномы - с коэффициентами), чтобы удобно было классифицировать и генетически мутировать эти деревья вычислений?
Что такое ИЗО, и какое оно имеет отношение к полиномам и exp?
источник

V(

Vλadimir (Hawthorne ... in Lisp Forever
источник

a

akater in Lisp Forever
«ИЗО» = «изобразительное искусство»?
источник

V(

Vλadimir (Hawthorne ... in Lisp Forever
да)
источник

SA

Sokolov Andrew in Lisp Forever
Alexey Egorov
Но это уже дерево.
Я в курсе но я думал может человек хочет апгрейд какой типа с бэкпойнтерами  или на векторах
источник

SA

Sokolov Andrew in Lisp Forever
Andrew Kravchuk
Мне кажется, проще генетическим алгоритмом мутировать байт-код какой-нибудь выдуманной виртуальной машины, чем лисповое AST
?
источник

a

akater in Lisp Forever
Я б начал с мутации непосредственно sexp'ов, даже не задумывался бы.

Классификация — алгебраический вопрос.  Чтоб на него ответить, нужно четко описать, о каких композициях речь.  Полезно думать о них не как о функциях, а как об алгебраических выражениях.

Полином можно представить просто в виде последовательности коэффициентов.  Полином на n символах (в математическом смысле, не в лисповском) будет тогда представлен «n-мерной» последовательностью.  Если обойтись (для простоты) целыми коэффициентами, то пока что кажется, будто речь о полиномах от x, y, …, (exp x), …, (exp (+ 1 x)), (exp (+ -1 x)), (exp (+ 2 x)), (exp (+ -2 x)), …, (exp x²), …, (exp y), … — то есть, о полиномах на некотором счетном множестве символов.
источник

a

akater in Lisp Forever
Если добавить i к символам, то получатся синусы и все такое.
источник

SA

Sokolov Andrew in Lisp Forever
Я бы не советовал представлять в виде последовательности (не очень понятно что это такое)
источник

SA

Sokolov Andrew in Lisp Forever
Я бы предложил что то типа std::map, по лексикографическим произведениям переменных и ещё со степенями
источник

a

akater in Lisp Forever
Sokolov Andrew
Я бы не советовал представлять в виде последовательности (не очень понятно что это такое)
Представление полиномов в виде последовательности коэффициентов это, небось, самое популярное представление полиномов вообще.  Альтернатив-то как бы особо и нет — только корни перечислять, а они не всегда есть.
источник

SA

Sokolov Andrew in Lisp Forever
1. Популярность -- так себе аргумент.
2. Что такое последовательность, я так и не узнал. В каком то смысле std::map это последовательность.
3. Если нет, то я привел альтернативу.
источник

SA

Sokolov Andrew in Lisp Forever
4. У всех полиномов есть корни. Правда они не всегда доступны.
источник

a

akater in Lisp Forever
Sokolov Andrew
1. Популярность -- так себе аргумент.
2. Что такое последовательность, я так и не узнал. В каком то смысле std::map это последовательность.
3. Если нет, то я привел альтернативу.
Если речь о том, как лучше имплементировать последовательность, то я не знаю.  Наверное, зависит от операций, как это часто бывает.

Полином 3 + x²y можно представить, например, так:

(:args (x y)
:coeffs
((3 0 0 0)
 (0 0 0)
 (0 1)
 (0)))


Если речь о том, что непонятно, что такое последовательность в математическом смысле, то не уверен, что ответить.  Упорядоченная последовательность.  М.б. конечная, м.б. нет.
источник

a

akater in Lisp Forever
Sokolov Andrew
4. У всех полиномов есть корни. Правда они не всегда доступны.
От такой терминологии меньше пользы, чем от терминологии, согласно которой у полинома может не быть корней, — в этом можно убедиться почитав книги по алгебре — но это оффтопик.
источник

SA

Sokolov Andrew in Lisp Forever
На всякий случай отмечу что у меня вышка по математике (рофлан) чтоб избежать лишних ремарок
источник

SA

Sokolov Andrew in Lisp Forever
Твой пример имплементации плохой так как
источник

SA

Sokolov Andrew in Lisp Forever
x^10000 + 1
источник

SA

Sokolov Andrew in Lisp Forever
Превращается в disaster
источник