Теорія категорій, обчислювальна складність та сполучення комбінаторики?


17

Я намагався прочитати « Перлини функціонального алгоритму », а згодом « Алгебра програмування », і явна відповідність між рекурсивно (та поліноміально) визначеними типами даних та комбінаторними об'єктами, що мають однакове рекурсивне визначення та згодом провідні до тих самих формальних енергетичних рядів (або генеруючих функцій), як показано у вступках до комбінаторних видів (я читав " Види та функціонери та типи, о, мій! ").

Отже, для першого питання, чи є спосіб відновити генеруюче (рекурсивне) рівняння з ряду потужностей? Це, однак, думка.

Мене більше зацікавило поняття початкових алгебр та кінцевої когелгери як своєрідного «визначення процедур щодо структури даних». Існують деякі практичні правила функціонального програмування, що стосуються композиції, продуктів відображення між алгебрами тощо тощо, описаних, наприклад, у цьому підручнику. Мені здається, що це міг би бути досить потужним способом підходу до складності, і, наприклад, виглядає досить просто, щоб відновити теорему Майстра в такому контексті (я маю на увазі, ви повинні зробити той самий аргумент, тому в цьому випадку не так багато виграшу), і унікальний катаморфізм початкової алгебри та факт (я помиляюсь?), що алгебри між A і FA для фунома-полінома є ізоморфними, мені здається, що такий підхід може мати багато переваг при аналізі складності операції над структурами даних.

З практичної точки зору, схожі на правила злиття (в основному, способи складання алгебрних морфізмів один з одним, морфізми вугілля та загальних морфізмів) є дуже потужною методикою оптимізації програмної трансформації та рефакторингу. Я маю рацію, думаючи, що повне використання цих правил може створити оптимальну програму (без зайвих структур проміжних даних чи інших зайвих операцій).

Я тут щось (і що)? Чи бенефіціар (з точки зору навчання) намагається розглянути складність обчислень таким чином? Чи структури, для яких ми можемо мати «хороші» початкові алгебри, якось занадто обмежені для деяких проблем?

Я в основному намагаюся знайти спосіб подумати про складність з точки зору структури пошукового простору та способу взаємодії "простору пошуку" та "алгоритму пошуку" через якийсь "приємний" об'єкт, наприклад, початкова алгебра функтора і зрозуміти, чи корисно спробувати переглянути речі таким чином, дивлячись на складніші структури.


5
чи можете ви переформатувати, щоб зробити це читабельним?
Лев Рейзін

11
Існує дві потенційні проблеми з вашими ідеями. По-перше, не всі структури даних можуть бути представлені за допомогою початкових алгебр. Будь-який загальний графік або складна структура вказівника не буде початковою алгеброю жодного функтора. По-друге, правила злиття тощо, як правило, лише підвищуватимуть ефективність коду, а не змінюють O (-) - ефективність алгоритму (хоча я знаю винятки).
Дейв Кларк

Дякую, Дейв, я намагаюся прочитати книгу теорії алгоритмічних ігор, і алгоритми традиційних методів лікування конкретизовані здебільшого оперативно, так би мовити, і мені було цікаво, чи є загальний спосіб наблизитися до них, і початкові алгебри тощо виглядали приємно для цього , але відсутність відповідності між загальною структурою даних та функторами є проблемою. @sclv: Дякую, я подивлюсь на це!
Стефан Петров

Хочу зазначити, що існують інші способи подання графіків, ніж складні структури вказівників. Зокрема, можна представити їх індуктивно, рядом змін або доповнень @DaveClarke. Я впевнений, що це стосується інших структур, таких як ця, хоча я не хочу говорити так категорично, оскільки я не знавець початкових алгебр та їх обмежень.
Самуель Шлезінгер

Відповіді:


7

Коментар Дейва Кларка є досить важливим. Зазвичай синтез не змінює ефективність O (-). Однак особливий інтерес викликає робота Лю, Ченга та Гудака над причинними комутаційними стрілками. Програми, написані з ними, обов'язково оптимізуються, частково за допомогою синтезу потоків, до одного циклу, що не містить динамічного розподілу пам'яті та проміжних структур: http://haskell.cs.yale.edu/?post_type=publication&p=72


6

Комбінаторні види Джояла, "допустимі конструкції" Седгвіка / Фалоджета "Аналітична комбінаторика" та "Хаскелл" Йоргея - це все добре.

McIlroy з серії UN Power, серйозний , також є обов'язковим для читання, як і розділ про основні курси в дорозі Хаскелла до логічної математики та програмування.

Історичні праці Бучі за редакцією Сондер Маклан та Хомського / Шютценбергера складають зв'язок між енергетичними серіями, алгебрами, деревами та кінцевими державними автоматами. Метод матриці передачі, описаний у Стенлі, показує, як обчислити генеруючі функції з зважених автоматів.

Я все ще розробляю найкращий спосіб перекладу між доменами (GF, зважені автомати, алгебра, дерево, рекурсія). Зараз я обстрілюю SymPy, оскільки ще немає гарного пакета символіки Haskell.

Особисто я взяв графік ітерації ендофукції, а потім обчислив на ньому мінімальний домінуючий набір, щоб отримати точну межу пошуку в чорному полі, http://oeis.org/A186202 Не впевнений, які типи результатів складності ви шукали, але ця методика є дуже потужною при вивченні будь-якої ендофукції протягом скінченного набору.

- Первісний 2 жовтня 14 о 15:37 відповідь--

Погляньте на тезу Брента Йорггея, яка випливає з роботи, яку ви цитували. http://www.cis.upenn.edu/%7Ebyorgey/hosted/thesis.pdf

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.