Один лишь этот комментарий более информативен, чем несколько статей автора.
Если я правильно понял — то это модификация сортировки слиянием, которая более рационально использует уже упорядоченные последовательности (в том числе и в обратном порядке)
P.S. Использование связного списка обычно приводит к промахам кэша
Watcom С хорошо работает с dos4/gw.
Почему вы сравниваете Borland C для Dos и Watcom C для NT?
Зачем в TSP прямая работа с клавиатурой через bioskey?
Что такое «сортир» и какое он имеет отношение к текущей статье?
В предыдущей статье вы проигнорировали мой вопрос о погрешности. Если вы используете примеры с заранее известным решением, как доказывается что это реальная погрешность в общем случае, а не подогнанная под конечное число эталонных примеров?
Я ожидал, что в статье будут хоть какие-то ссылки по теме.
Автор затрагивает достаточно интересную тему «изобретения» алгоритмов, использует некие эвристики для ускорения решения, но вот с обоснованием решений как-то мутно.
Обычно есть какие-то вполне обоснованные особенности задачи (например какая-нибудь особенная архитектура железа, строгие требования к памяти / времени выполнения, надёжности), которые требуют доработки стандартных решений.
Например — в фургоне с хот-догами стоит старенький 486SX c DOS, продавец путешествует по городу и решает задачу коммивояжёра. Я утрирую, но всё-же — нужны какие-то пусть даже гипотетически условия, для которых изобретение будет оправдано. Без этого статья теряет смысл, объективность и вызывает скорее недоумение (но зачем?)
«Программа написана для DOS, компилятор BC++ 3.1»
Но зачем это однопоточное ретро в 2019?
Почему бы не рассмотреть решение на OpenCL, например.
Не надо отвечать как прошлый раз в стиле — я уже где-то показывал и кому-то рассказывал — сами должны были это где-то искать и найти.
Большинство пользователей просто прочли статью — если им стало что-то непонятно — задали конкретный вопрос. Они не изучали перечень использованной литературы, в статье его вообще нет (может всё-таки стоит его добавить), и не следят за вашим литературным творчеством.
Статья на Хабре — для широкой общественности, пожалуйста будьте вежливы.
В контексте игр симуляция работы светофора тоже исторически относится к ИИ — это же конечный автомат всё-таки :)
Интеллектуально это или нет — можно легко определить просто поставив человека (как эталон интеллектуальности) в те же самые условия что и ИИ — и сравнить результат.
Такая разновидность теста Тьюринга — посадить человека в изолированную коробку-светофор и дать ему часы. Сравнить результаты. :)
Вот если кроме часов в светофоре ещё стоит камера или какие-то дополнительные датчики — то в таких условиях ИИ соревноваться с человеком сложнее.
P.S. Если SQL скрипт играет в шахматы/шашки/крестики-нолики не хуже среднестатистического обывателя, почему бы не назвать его интеллектуальным? :)
Да! Вы можете предложить более интеллектуальный результат сортировки чисел? :)
Конкретно в игровом ИИ в результате сортировки ингда были бы ещё и ошибки для пущей «человечности» :)
Да, чтобы называться Искусственным Интеллектом безусловно нужно больше циклов, условий и хешей :)
Первая статья по-моему хорошо получилась, с картинками. Поздравления автору!
Увы, «интеллектуальность» зависит лишь от полученных результатов по сравнению с человеческими. В случае поставленной задачи нахождения пути — результат близок к человеческому, естественному. Да, можно сказать что сама задача не особо интеллектуальная, однако:
— алгоритм отмечает обработанные узлы (обучается)
— алгоритм работает на разных связных графах (адаптивность)
— итерации поиска по смежным узлам продолжаются до успеха (итеративность)
P.S. На нейросети тоже можно сказать «банальный алгоритм без какой-либо изящности» :)
A* — это уже достаточно интеллектуально :)
В контексте игр бот и есть ИИ.
Интеллектуальность ИИ в играх заключается в том, чтобы с ботами было интересно играть — и это достаточно сложная задача. Например для ботов не сложно идеально перемещаться и стрелять без промаха. Бот может всегда видеть и слышать игрока, но при этом должен вести себя так, чтобы игроку было интересно его побеждать.
ИИ, который всегда обыгрывает человека в шахматы — достижение чисто научное.
В контексте же развлекательных игр — бот, который попадает в голову игроку в движении из пистолета с 500 метров — это провал. Задача победить человека любой ценой там не стоит — она давно решена классическими методами. В играх задачи ИИ идут гораздо дальше чем просто победить :)
Это смотря как считать что лучше. Многие операции можно выполнять параллельно/одновременно, и хотя суммарное число операций при этом будет больше, по времени это будет быстрее.
Боже мой — автор страдает этим не первый десяток лет! За это время можно было бы и наглядно оформить описания алгоритмов с картинками вместо словесных, нарисовать красивые графики :)
Но самый главный алгоритм — как пользоваться сетевым этикетом, чтобы не банили и сливали карму автор не осилил. Это печально на самом деле.
Я не понимаю каким образом ребро в «несколько парсеков» окажется в минимальном остовном дереве.
Возможно речь идёт об ориентированных графах, где «стоимость» использования рёбер для перехода AB и BA различна (или вообще перехода назад нет), или вершины нельзя посещать несколько раз…
Но тогда приведённые примеры графов реально сбивают с толку, они же «геометрические».
Если я правильно понял — то это модификация сортировки слиянием, которая более рационально использует уже упорядоченные последовательности (в том числе и в обратном порядке)
P.S. Использование связного списка обычно приводит к промахам кэша
Почему вы сравниваете Borland C для Dos и Watcom C для NT?
Зачем в TSP прямая работа с клавиатурой через bioskey?
Что такое «сортир» и какое он имеет отношение к текущей статье?
В предыдущей статье вы проигнорировали мой вопрос о погрешности. Если вы используете примеры с заранее известным решением, как доказывается что это реальная погрешность в общем случае, а не подогнанная под конечное число эталонных примеров?
Автор затрагивает достаточно интересную тему «изобретения» алгоритмов, использует некие эвристики для ускорения решения, но вот с обоснованием решений как-то мутно.
Обычно есть какие-то вполне обоснованные особенности задачи (например какая-нибудь особенная архитектура железа, строгие требования к памяти / времени выполнения, надёжности), которые требуют доработки стандартных решений.
Например — в фургоне с хот-догами стоит старенький 486SX c DOS, продавец путешествует по городу и решает задачу коммивояжёра. Я утрирую, но всё-же — нужны какие-то пусть даже гипотетически условия, для которых изобретение будет оправдано. Без этого статья теряет смысл, объективность и вызывает скорее недоумение (но зачем?)
Но зачем это однопоточное ретро в 2019?
Почему бы не рассмотреть решение на OpenCL, например.
Не надо отвечать как прошлый раз в стиле — я уже где-то показывал и кому-то рассказывал — сами должны были это где-то искать и найти.
Большинство пользователей просто прочли статью — если им стало что-то непонятно — задали конкретный вопрос. Они не изучали перечень использованной литературы, в статье его вообще нет (может всё-таки стоит его добавить), и не следят за вашим литературным творчеством.
Статья на Хабре — для широкой общественности, пожалуйста будьте вежливы.
Интеллектуально это или нет — можно легко определить просто поставив человека (как эталон интеллектуальности) в те же самые условия что и ИИ — и сравнить результат.
Такая разновидность теста Тьюринга — посадить человека в изолированную коробку-светофор и дать ему часы. Сравнить результаты. :)
Вот если кроме часов в светофоре ещё стоит камера или какие-то дополнительные датчики — то в таких условиях ИИ соревноваться с человеком сложнее.
P.S. Если SQL скрипт играет в шахматы/шашки/крестики-нолики не хуже среднестатистического обывателя, почему бы не назвать его интеллектуальным? :)
Конкретно в игровом ИИ в результате сортировки ингда были бы ещё и ошибки для пущей «человечности» :)
Первая статья по-моему хорошо получилась, с картинками. Поздравления автору!
— алгоритм отмечает обработанные узлы (обучается)
— алгоритм работает на разных связных графах (адаптивность)
— итерации поиска по смежным узлам продолжаются до успеха (итеративность)
P.S. На нейросети тоже можно сказать «банальный алгоритм без какой-либо изящности» :)
Ещё из описания непонятно — это поиск в ширину, или в глубину.
В контексте игр бот и есть ИИ.
Интеллектуальность ИИ в играх заключается в том, чтобы с ботами было интересно играть — и это достаточно сложная задача. Например для ботов не сложно идеально перемещаться и стрелять без промаха. Бот может всегда видеть и слышать игрока, но при этом должен вести себя так, чтобы игроку было интересно его побеждать.
ИИ, который всегда обыгрывает человека в шахматы — достижение чисто научное.
В контексте же развлекательных игр — бот, который попадает в голову игроку в движении из пистолета с 500 метров — это провал. Задача победить человека любой ценой там не стоит — она давно решена классическими методами. В играх задачи ИИ идут гораздо дальше чем просто победить :)
Но самый главный алгоритм — как пользоваться сетевым этикетом, чтобы не банили и сливали карму автор не осилил. Это печально на самом деле.
Возможно речь идёт об ориентированных графах, где «стоимость» использования рёбер для перехода AB и BA различна (или вообще перехода назад нет), или вершины нельзя посещать несколько раз…
Но тогда приведённые примеры графов реально сбивают с толку, они же «геометрические».
Откуда могут взяться тысячи процентов, если можно просто минимальное остовное дерево обойти два раза…