Аз съм чувал за такива думи, включени в университетски курс по линено оптимиране (или линейно програмиране), където се обясняват такива неща, като симплекс метод, задачата за търговския пътник, и унгарския метод. В съдържанието имаше един раздел, наречен "Динамично Оптимиране", което е това за което ти питаш.
Ти да не би да си чул тая глупост от някоя изкуфяла лелка? Щото съм слушал образовани хора, даже хабилитирани учени, да дрънкат подобни глупости, без да знаят къде е далаверата :) Има много шибани изкуфелници, дето не знаят какво приказват -- вЕрвай ми!
Вижда ми се идиотско, това гръмко заглалавие "динамично оптимиране", или ако щеш, "многоетапен процес за взимане на решение". Това са тъпи теми писани от хора преди време, а после се е оказало, че са в глуха линия.
Всяко хубаво момиче в този случай би казало: bla-bla-bla.
---
Не зная дали ще разбереш, какво искам да кажа. Ако не -- забрави моето писане. Иначе, можем да продължим разговора.
---
Класически въпроса е изяснен, обстоятелствено, и изчерпателно.
Станало е в математическата логика, благодарение на Джулия Робинсон (въвела метода на резолюцията) през 1960-те години, както и благодарение на Скулем, Ербранд, ... и много други. Тази приказка се разказва в СУ на програмистите по дисциплината логическо програмиране (обаче за жалост лекторите ми се виждат гола-вода).
---
Отговора на класическата логика е много ясен и конктетен:
(1) постулираш условията на задачата си, като избираш някакъв език L, и множество аксиоми в този език, в логиката от 1-ви порядък (или както други му казват предикатно смятане от 1-ви порядък).
(2) Задаваш въпрос, т.е. някаква логическа формула, за която се чудиш дали е вярна при така аксиоматизираните услови.
(3) Метода на резолюцията измислен от Джулия Робинсон, ни казва как да проверим твърдението.
/има измислени оптимизации, работещи по-бързо, в конкретни случаи -- в общия случай нищо не помага, освен класическата формулировка на Джулия/
В този метод има едно дърво, построено след Скулемизация, от Ербрановия модел. В него си търсим отговора. Логиката е дала метода на Джулия Робинсон, който може каквото може -- и е доказано че никой не може повече. Задачата е трудна, и не винаги има решение. Обаче програмистите опнякога се изхитрят да решат конкретна задача, възползвайки се от конкретната ситуация, въпреки че класическата позиция е, че не се гарантира решение).
Най-известни са алгоритмите за търсене в дълбочина (кактом прави ПРОЛОГ) или по ширина. Има още много методи, подобрения, дефиниции, чалъми... публикувани по списания, но за жалост всички те са приложими в конкретна задача, а пък в общия случай няма решение.
---
Практически,
някой програмист би написал програма на езика PROLOG, дето изглжда нещо подобно:
Цел :-- подцел1, подцел2, подцел3.
подцел1 :-- подцел11, подцел12, подцел13.
подцел2 :-- подцел21, подцел22.
подцел3 :-- подцел31.
подцел11 :- подцел112, подцел113.
...
Не е място да обяснявам сега какво е PROLOG, но та отбележа, че този е зик теоретично е ограничен да включва само Хорнови клаузи, което не ни позволява да изкажем всяка логическа формула. Заради това пък, технчески, езуика позволява <деструктивни> клаузи, които ебават майката на правилата (нищо че са само главоболие за програмиста).
... (to be continued) ...
|