651

Пятнашки и А*

Навеяно постом Собеседование vs первый рабочий день и комментами к нему.

Ходил на курсы С++ для общего развития. Работа с программированием никак не связана, но мечтал с юности об этом деле, а возможности небыло. Подрос немного до 30+, начал нормально зарабатывать и решил воплощать мечту. Был самый старший в группе, годиков на десять от всех.
Так вот. На курсах была задачка написать игру Пятнашки с примитивным интерфейсом. Из функционала - только клик по квадратикам с цифрами, их перемещение и распознавание победной комбинации.

Пятнашки и А*

Преподаватель решил немного нас подзадорить и сказал, кто напишет автосборку из случайной раскладки, того САМ лично за руку поведёт на собеседование. Описал он эту задачу, как не воплотимую для таких простых как мы.

Вобщем-то, зацепил за живое.
Не боги же горшки лепят, подумал я. И погряз на 2 месяца в изучение темы и написание кода. Информации в интернете было очень мало. Можно сказать и небыло вовсе. Пример кода посмотреть не у кого было. На каком то сайте нашёл чью то работу с олимпиады, где математичесски оценивались разные варианты применения разных алгоритмов для решения этой задачи. Вот тут то я и познакомился с А* )))
Что бы понять его на интуитивном уровне ушло ещё недели две. Но когда пазл в голове сложился в чёткую картинку я почувствовал настоящую эйфорию. Код просто рекой полился. Автосборка была написана!
Я был больше чем просто рад, я кайфовал ежесекундно!

На очередном занятии показал результат преподавателю. Тот открыл ехешник, посмотрел на интерфейс и сказал, что сейчас покажет как это должно выглядеть. Открыл чей то проект, бесспорно визуально более красивый, и начал хвалить его автора - бывшего своего студента. Рассказывал какой он был распрекрасный чувак и как много добился на сегодня. Я попросил запустить автосборку чужого проекта. С рандомной раскладки решение было найдено за 140 с чем то ходов. И тут я понял, что его вариант находит не самый короткий верный путь, а просто первый попавшийся верный, на что, собственно я и указал, попросив запустить эту же раскладку в моём варианте. Моя програма дошла до финиша за 40 с чем то ходов. Я был так горд собой, что это отчётливо читалось на моём лице. Но преподаватель не поверил. Попросил оставить исходники, что бы он всё перепроверил. Так и проверяет до сих пор. А мне по человечески было реально обидно, что он не сдержал слово и не предложил идти на собеседование. Я бы отказался, так как работа у меня нормальная, хоть и не в IT, но за державу обидно.
Доверие к себе он подорвал ровно в тот момент не только у меня, но и у всей группы.

А в А* я остался влюблён на всю жизнь )))

Лига программистов

2.3K постов12K подписчика

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Вы смотрите срез комментариев. Показать все
3
Автор поста оценил этот комментарий

ТС, хочу дополнить по поводу нахождения решений.

Для каждой вершины у вас есть 3 числа:

1. эвристика

2. расстояние до этой вершины от стартовой

3. сумма 1 и 2


А вот теперь немного магии.

Если при переборе комнат алгоритм будет выбирать следующую комнату основываясь на (1) (эвристике), то вы получите самый кратчайший путь решения (но поиск решений будет происходить долго)

Если при переборе комнат алгоритм будет выбирать следующую комнату основываясь на (2), то вы найдете решение практически моментально, но оно может быть абсурдно по требуемому количеству ходов. (Например у меня для поля 3 на 3 алгоритм таким образом находил решение за 30 тысяч шагов)

Вы скорее всего используете (3) для выбора следующей компнаты.

раскрыть ветку (3)
2
Автор поста оценил этот комментарий
Абсолютно верно.
У каждой вершины есть свой вес.
В моём случае это была сумма следующих велечин:
1. Пройденное расстояние от старта;
2. Евристика пути до финиша основанная на манхеттенском расстоянии каждой доминошки до терминального положения.
раскрыть ветку (2)
0
Автор поста оценил этот комментарий
А что мкнхеттенское расстояние и эвристическое?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Не понял вопрос?
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества