Вот и завершился очередной конкурс. Поздравляю победителей!
Немного оффтоп, но лишь немного...
В ту пору, когда я учился в универе, наш преподаватель по математике (Кайбханов К.Э.) имел такую "присказку".
Идет, например, практика, он знакомит с принципом решения задачи какого-нибудь нового типа, что-то объясняет у доски. Но тема не очень интересная для большинства, да и четвертая пара уже, все устали, и внимание аудитории постепенно падает, падает... И вот, в какой-то момент, когда внимание студентов упало ниже определенного порога, Карахан, как бы невзначай, говорит спокойно: "учтите, что такого же типа задачи будут на предстоящей контрольной".
Все мгновенно оживляются, начинают пытаться понять, о чем он тут рассказывал последние пять-десять минут, мало что понимают...
- Может не надо такую задачу.
- Уже и так много материала на контрольную, а это куда.
- Да сложная же, как такое решать то на контрольной, времени ж даёте...
, - слышится из аудитории.
Он поворачивается от доски, и с выражением полным искреннего удивления, говорит: "Вы что же, всё, что я даю на контрольной, РЕШАЕТЕ"?
Все непонимающе смотрят.
- Не надо решать, - продолжает он, - это же так трудно. Я вообще не требую от вас решения. Просто в нужных местах напишите нужные цифры и буквы. И всё!... И продолжает писать у доски.
Тут уже аудитории возразить нечего. Все погружаемся в тетрадки. И начинаем смотреть на его выкладки у доски внимательно Касательно нашей задачи, проверять не компланарность сочетание всех точек, искать глобальный минимум сумасшедшей функции десятков переменных, оптимизировать алгоритмы и неделями мучать "железо"... - это всё не надо. Достаточно лишь просто расставить в нужных местах куба точки, и всё.
Основной принцип, который я применял - каждая
новая точка ставится в то поле, которое принесет минимальное пересечение куба новыми плоскостями (при минимуме ошибок, естественно). Под пересечением я понимал количество прежде свободных точек в кубе, которые, после установки нашей новой точки, стали "запретными". Мне кажется, что этот простой принцип надо было развивать и заниматься им подробнее. Но времени на это не было... Далее, после заполнения куба, можно попробовать попереставлять некоторые точки туда-сюда, и ещё уменьшить ошибку, в идеале до нуля.
Никакого отжига, никакой генетики. Всё это не работает на такой задаче (по крайнем мере у меня не сработало). Метод градиентного спуска давал примерно такие же результаты, при гораздо меньшем времени нахождения минимума.
Больш
ая ошибка - заполнять куб случайными точками, а потом пытаться улучшить их расположение. Поскольку, и я об этом неоднократно говорил, у нас сильная "связанность" точек и переставляя по одной-две-(да хоть три) точки плохое решение не получится превратить в хорошее. Немного улучшить - да. Но не более. При моём способе заполнения куба, хорошие решения получаются ещё на этапе расстановки точек, и, только, когда "напихиваем" уж совсем много точек в куб, начинаются ошибки.
Я долго и безуспешно старался победить
, и удивлен, что, кажется, лишь 6 человек смогли это сделать (и
- они же). Предположу, что эти размерности возможно решить разновидностями переборных алгоритмов с отсечениями. Но я это не использовал и остался с результатами в шаге от максимума для
и
...
Вот такой "колхозный" метод вышел у меня в этом конкурсе. Ну, вошел в десятку - уже не плохо
!
Как решал Тим - это, конечно, загадка. Он - большой молодец и всех именитых соперников начисто лишил всех шансов!