Составление школьного расписания
- From
- Boris Rudakov (2:5054/9.4)
- To
- Andrey Belyakov (2:5054/9)
- Date
- 2000-02-25T11:41:32Z
- Area
- RU.ALGORITHMS
Hello Andrey!
24 Feb 00 12:43, Andrey Belyakov wrote to All:
AB> From: "Andrey Belyakov" <andrejb@care.lv>
AB> Hi, Boris Rudakov !
>> >>> Никто субж не пробовал делать? У меня уже немного бошка
>> >>> съехала при попытках это организовать...
>> AB>> Если найдешь общее решение - пиши - куплю.
>> VP> Ага, это можно сразу за диссертацию садиться, эту задачу не
>> VP> могут решить даже подвинутые профессора и программисты.
>> Не надо преувеличивать. Задача в основном сводится к топологической
>> сортировке, а основные сложности связаны с обработкой притиворечий
>> (циклов) и как правило заключаются лишь в том как выбрать наименее
>> неправильное из всех неправильных решений в ситуации когда
>> правильного решения нет :)
AB> Собственно об этом и разговор. Как отбросить на этапе нахождения
AB> решения те из неправильных решений, которые не нужно проверять
AB> в процессе решения?
Если не проверять, то как узнать что они неправильные ? :)
Нет, на самом деле можно придумать легкую оптимизацию и отсекать неправильные решения на ранней стадии рассмотрения. А вообще, это должно решаться путем не очень сложной рекурсии: нужно разработать систему оценок нарушений (исходя из предметной области) и путем обычного рекурсивного обхода выбрать N решений с наилучшим рейтингом. Оптимизация может лишь помочь отсекать особоплохие решения не анализируя их до конца.
AB> Я согласен потратить месяц
Ты шутишь - за месяц можно отрендерить чуть ли не половину графики для крутого голливудского фильма, а там вычислительные задачки не в пример серьезней :)
AB> на крутой (4 процессора + 1Гб RAM) персоналке считая предварительные
AB> данные, с тем чтобы потом задача гарантированно решалась за пару
AB> секунд.
Ты точно шутишь :)
* Разрабатываемый алгоритм не может опираться ни на какие "предварительные данные" - ввел данные в законченную программу, нажал кнопку и через некоторое время получил N решений, из которых L правильных и M - наилучших неправильных.
* На такой машинке про которую ты говоришь, любой хоть сколько-то разумный алгоритм решения ДАННОЙ ЗАДАЧИ, при разумном с точки зрения практики количестве данных, должен работать чуть ли не мгновенно :) Особенно если ты дашь себе труд его распаралелить чтобы воспользоваться многопроцессорностью (это совсем несложно).
В общем, пробегись по алгоритму топологической сортировки (быстро и на пальцах - у Вирта, сложно но исчерпывающе - у Кнута, только том не помню). Потом определись с оценочной функцией (рейтингами нарушений) и напиши рекурсивный алгоритм оценки некорректных решений. Чисто в свободное время можешь ого оптимизировать и распаралелить. Одним словом, если предметная область четко очерчена (т.е. есть приемлимое ТЗ) то определиться с рейтингами и UI можно очень быстро и на всю работу уйдет не более 1-2-х месяцев (я имею в виду уже не алгоритм, а полноценный программный продукт).
AB> Андрей.
Борис Рудаков, Как увидишь Сникерс - ты не ешь его,
BBR он с самим Манделлой цвета одного...
--- Be happy: BBR is looking at you !
* Origin: АлкАголь малыми дозами безвреден в любых количествах (2:5054/9.4)