Pull to refresh
241
0
Горьков Алексей @agorkov

SQL

Send message
Никто не спорит, но
1. расход памяти
2. сложность по времени всё равно больше, чем у эвристик.
Хотя, соглашусь с Вами, динамическое программирование — очень и очень мощный аппарат.
Просмотр одного процента узлов — это ожидаемая эффективность метода ветвей и границ.
А скорость расчёта… Давайте пойдём от обратного. Предположим, что эта задача и правда решается за секунду. Это значит, что в секунду будет перебрано 3*10^16 узлов. Предположим также, что просмотр узла занимает один такт процессора. Получается, что Ваш компьютер работает на частоте 10 пета(!)герц? P.S. И нет, мне не смешно.
«Эвристика» в том, какую величину мы пытаемся локально минимизировать.
Вторая строка сверху. Мы предполагаем, что МВиГ исследует только один процент узлов, но я так понимаю, спорить с Вами бесполезно.
Не люблю заниматься арифметикой, но вы неправы:

Строго говоря, я тоже загнул насчёт миллионов лет, но 1100 лет это совсем не те доли секунд, о которых Вы говорите.
С огромным интересом послушаю ваш вариант решения этой задачи. (Уверяю Вас, с теорией оптимизации я знаком)
В этом и есть суть эвристик. Они почти никогда не дают глобально-оптимальный результат. Решение найденное с помощью эвристических алгоритмов гарантированно не худшее и с очень большой долей вероятности его можно назвать хорошим. Главный плюс этих алгоритмов в том, что они работают быстро и могут дать хоть какой-то результат в приемлемое время.
И правильно делают. Купил я его. Выброшенные на ветер деньги.
Для высших сословий есть GP и Patek Philippe.
Так я ж не для себя пишу, а для тех, кто пока не очень хорош в английском.
В русской википедии некоторые алгоритмы описаны не очень подробно. К примеру сортировка пирамидой: ru.wikipedia.org/wiki/%D0%9F%D0%B8%D1%80%D0%B0%D0%BC%D0%B8%D0%B4%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0
А если говорить о смысле кода, то это сортировка с постоянно уменьшающимся шагом. Сначала с шагом 31, потом 15, потом 7 и т.д.
Спасибо. Разумеется имеется в виду это:
h[1]:=31; h[2]:=15; h[3]:=7; h[4]:=3; h[5]:=1;
Функциональное программирование определённо добро.
Быть может, каждый программист и обязан это знать, но 28 человек добавили этот топик в избранное, а значит, кому-то это всё-таки нужно, интересно, полезно.
Правда большая половина людей, этого не понимает. :)
И на будущее, не бывает меньшей и большей половины.
Спасибо, исправил.
Потому что N^2*N^3=N^5.
Успеют они это выучить, моё дело дать самые основы.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity