Алгоритм и тактика поиска слов в игре Балда / Хабр
Однажды на Хабре нашел статью об алгоритме поиска слов в игре балда: habrahabr.ru/post/207734 Я сам являюсь автором решателя «Робот Балда 2», который за многие годы приобрел популярность у многих онлайн игроков в игре Балда. И я хотел бы то же поделиться своим опытом и рассказать об одном уникальном алгоритме в игре балда, который еще ни кем не применялся.
Про ту статью в целом. По такому же алгоритму и у меня ищутся слова, через префиксные деревья. Но вместо двух деревьев, у меня одно, которое содержит символ «разделитель», после которого оставшаяся часть слова идет инвертированной.
Есть также возможность включить более сложное префиксное дерево («турбо-режим»), с символом «пустышка». В этом случае терминальный узел содержит все буквы, которые можно поставить в пустышке. Например, мы прошли путь К*Т, и встретили терминальный узел. Он будет содержать две буквы, «О» и «И». В ячейке «О» будет ссылка на слово КОТ, а в «И» на слово КИТ.
Лучше всего символ пустышки сделать первым символом(корневым узлом) в префиксном дереве, и поиск слов начинать всегда с пустышки(даже если у вас дерево без символа пустышки). В этом случае скорость поиска будет гораздо быстрей, и дерево не вырастет в 5 раз. Однако, у меня специально сделано что бы поиск начинался с уже поставленных букв. Хотя это крайне не эффективно, т.к. увеличивает кол-во рекурсивных проходов, и нужно будет отсеивать дубли, которые неизбежно появятся на каждой клетке, через которые проходит слово. Но такой подход(поиск с не пустых клеток) задуман специально, чтоб можно было применить одну хитрую оптимизацию, о которой я расскажу в конце.
(4-1)=1.000.000 поисков. Если ваша программа умеет искать все слова за 1мс, то она проверит игру на 4 хода вперед за 16 минут! А на раздумья над ходом дается как правило 2 минуты. Теперь вы понимаете, зачем нужен очень быстрый поиск. Моя программа умеет за несколько секунд анализировать игру на 8-10 ходов вперед.Самое большое ускорение дает отсеивание слов. Если сказать проще — ветками дерева перебора становятся только самые длинные слова(Это примерно. В реальности, у меня отбор слов чуточку сложней). Как показала практика, крайне редко бывает, что в начале и середине партии более короткие слова в будущем отыгрывают свою разницу в очках с более длинным словом, да еще и приносят больше очков. У соперника слишком много вариантов «отыграться», и вероятность поймать его в ловушку слишком низкая. А значит, нет смысла терять время на короткие слова. А если уже конец партии, и остается не много ходов, программа расширяет список анализируемых слов. У меня уже за 4-6 ходов до конца игры участвуют в переборе абсолютно все слова.
Второе существенное ускорение дает альфа бета отсечения.
До этого я упоминал стандартные алгоритмы, которые вы всегда сможете найти и ознакомиться. А теперь напишу свое «изобретение». Оно касается оптимизации поиска слов в процессе построения дерева виртуальных ходов. Вот смотрите. Как обычно мы строим дерево перебора в балде:
1. Находим все слова.
2. Перебираем все слова, проставляя поочередно каждое слово на игровое поле.
3. Переходим рекурсивно на пункт 1. или возвращаемся с рекурсии, если слишком глубоко залезли.
А теперь напишу, как у меня:
2. Перебираем все слова, проставляя поочередно каждое слово на игровое поле.
3. Находим все слова, но уже по другому принципу! Копируем в результат поиска все слова, которые уже были найдены в последнем ходу. Исключаем из этого списка те слова, которые теперь невозможно составить, а именно, вычеркиваем все слова, чья вставляемая буква находилась в той же самой клетке, куда была поставлена буква последнего сыгранного слова (ведь эта клетка теперь занята, а значит больше не составишь в ней слова). Дальше добавляем в список новые слова. Для этого ищем не все слова на игровом поле, а только те, которые проходят через занятую клетку последним словом. Ведь что изменилось с предыдущего хода — на игровом поле появилась новая буква. А значит, если и появились новые слова, то они все должны проходить через новую букву. Если не проходят — то эти слова уже ранее найдены, и есть у нас в списке.
4. Переходим рекурсивно на пункт 2. или возвращаемся с рекурсии, если слишком глубоко залезли.
У меня на самом деле список слов не копируется каждый раз, и слова не удаляются в чистом виде. А осуществляются все это за счет переключения указателя на страницы в многомерном массиве, чья размерность определяется как «адрес клетки», «глубина хода», и собственно ID-шники слов, которые были найдены в конкретной клетке, на конкретной глубине. Таким образом, когда мы откатываемся в дереве на уровень назад, нам не нужно восстанавливать список найденных слов в этом узле, мы просто уменьшаем указатель на «страницу». А когда наоборот, углубляемся — указатель увеличивается, и в новую страницу заносятся новые слова. Таким образом. Где нибудь на 10 ходу чтоб узнать все слова в этом ходу, нам нужно сложить все слова из 10-ти «доисканных страниц». Все они в сумме и представляют собой список слов, как если бы искали обычным способом. Но если честно, я уже не помню всех технических подробностей структуры многомерного массива.
Как ни странно, но мой алгоритм «доискивания» слов не дал ошеломляющего ускорения. Но зато он дал стабильность времени поиска. Обычный метод поиска уже к середине игры существенно замедляется, а мой не замечает этой «нагрузки». Ведь как ранее говорилось, сколько бы букв не было на игровом поле — на каждый виртуальный ход будут искаться слова только в 1-ой клетке, а не во всех. Особенно ценно это свойство на больших игровых полях.
В заключение хочу сказать, что анализ минимаксом сильно зависит от точности словаря. Поэтому важен не размер словаря, а его соответствие словарю игрового портала.
Страница не найдена
wordmap
Данная страница не найдена или была удалена.
Только что искали:
канделябр только что
пучно 1 секунда назад
оииибкзф 1 секунда назад
лучно 2 секунды назад
ледоход 2 секунды назад
вытряхивать 2 секунды назад
писток 2 секунды назад
винчер 2 секунды назад
неистовый ветер 2 секунды назад
лоогдьнер 3 секунды назад
невечно 3 секунды назад
уточняемый 3 секунды назад
оешкялпрд 4 секунды назад
невиданные трудности 4 секунды назад
центмиа 5 секунд назад
Последние игры в словабалдучепуху
Имя | Слово | Угадано | Время | Откуда |
---|---|---|---|---|
Игрок 1 | юриспруденция | 29 слов | 3 минуты назад | 93. 80.180.12 |
Игрок 2 | неплохо | 0 слов | 14 минут назад | 217.66.152.242 |
Игрок 3 | 123 | 0 слов | 6 часов назад | 5.43.243.155 |
Игрок 4 | стабилизатор | 0 слов | 8 часов назад | 213.221.12.24 |
Игрок 5 | эстетичность | 0 слов | 8 часов назад | 213.221.12.24 |
Игрок 6 | марта | 0 слов | 10 часов назад | 178.166.155.22 |
Игрок 7 | хуй | 0 слов | 10 часов назад | 37.214.34.22 |
Играть в Слова! |
Имя | Слово | Счет | Откуда | |
---|---|---|---|---|
Игрок 1 | препятств | 54:48 | 49 минут назад | 217. 66.159.108 |
Игрок 2 | фишка | 52:52 | 1 час назад | 176.59.97.162 |
Игрок 3 | пенек | 0:0 | 1 час назад | 176.59.97.162 |
Игрок 4 | фишка | 38:44 | 1 час назад | 176.59.97.162 |
Игрок 5 | деньг | 16:17 | 2 часа назад | 94.245.151.16 |
Игрок 6 | преми | 50:48 | 2 часа назад | 94.245.151.16 |
Игрок 7 | забег | 14:13 | 2 часа назад | 176.59.160.72 |
Играть в Балду! |
Имя | Игра | Вопросы | Откуда | |
---|---|---|---|---|
Krasskina | На двоих | 10 вопросов | 8 часов назад | 213. 87.161.170 |
Оо | На двоих | 10 вопросов | 22 часа назад | 89.107.138.178 |
Люблю Ви | На двоих | 10 вопросов | 22 часа назад | 89.107.138.178 |
А | На одного | 20 вопросов | 1 день назад | 185.23.8.164 |
Ира | На одного | 10 вопросов | 1 день назад | 95.173.151.219 |
Жопа осла | На двоих | 10 вопросов | 1 день назад | 213.87.146.93 |
SERTHAN | На двоих | 10 вопросов | 2 дня назад | 85.174.195.246 |
Играть в Чепуху! |
BULLSHIT Synonyms: 20 Synonyms & Antonyms for BULLSHIT
See definition of bullshit on Dictionary. com
- noun (vulgar) nonsense, lies
synonyms for bullshit
- bull
- бред
- чушь
- бред
- бред
- бред
- фигня
- бред
- вздор
- вздор
- 2
- 20012
- Bunkum
- Hokum
- Hooey
- Malarkey
- Moonshine
- Phooey
- Poppycock
- Posh
на этой странице. бред, бред, бред, бред и бред.
антонимы к слову ерунда
НАИБОЛЕЕ ПОДХОДЯЩИЕ
Тезаурус Роже 21-го века, третье издание Copyright © 2013, Philip Lief Group.
ПОПРОБУЙТЕ ИСПОЛЬЗОВАТЬ ерунду
Посмотрите, как выглядит ваше предложение с разными синонимами.
Символов: 0/140
ВИКТОРИНА
Проверьте свой природный интеллект с помощью этой викторины по условиям искусственного интеллекта!
НАЧАТЬ ВИКТОРИНУКак использовать ерунду в предложении
Вплоть до того момента, как Томас Билграм, причудливый датчанин, не назвал это чушью и спас десятки умирающих ячменных возлияний, в конечном итоге реинкарнировав их в крафтовый джин Mashed Up.
WHEN DEAD BEER WALKS: ДАТАНСКИЙ ВО ВЬЕТНАМЕ ПРЕВРАЩАЕТ СТРАННОЕ НАВАРЕНИЕ В ДЕЛО ЖИНЬЮЖЕН РОБИНСОН 12 ФЕВРАЛЯ 2021OZY
сжимать — это «чушь собачья».
НАПАДЕНИЕ НА КАПИТОЛИЙ, ИМПИЧМЕНТ И ОСТАНОВКА ИГРЫ ПРОЯСНИТЕ: 2021 ГОД БУДЕТ СТАНЕТ ГОДОМ МОДЕРАТОРА АЛЕКС ФИТЦПАТРИК 29 ЯНВАРЯ 2021ВРЕМЯ
Вы подавляете всю эту суперинтересную чушь, и ваша прибыль улетает в окно.
ЧТО ЕСЛИ СЕТЬ БОЛЬШЕ БЫЛА ПОХОЖА НА ВИКИПЕДИЮ? АЛЕКС ФИТЦПАТРИК 15 ЯНВАРЯ 2021ВРЕМЯ
Кайли большую часть фильма бродит так же, как я бродил большую часть 2020 года — со стеклянными глазами, откровенно напуганная чужой чушью и отчаянно пытающаяся выйти на улицу .
ОДНО ХОРОШО: HOUSEBOUND — ИДЕАЛЬНАЯ КОМЕДИЯ УЖАСОВ ДЛЯ ЛЮДЕЙ, НАХОДЯЩИХСЯ В КАРАНТИНЕДАЖЕ РОМАНА 31 ДЕКАБРЯ 2020 ГОДАVOX
Мои коллеги и друзья знали, что это чушь собачья, и это самое главное.
GOOGLE НЕЗАКОННО УСТРАНИЛ ДВУХ СОТРУДНИКОВ-АКТИВИСТОВ, ПО ЗАЯВЛЕНИЮ ФЕДЕРАЛЬНОГО СОВЕТА ПО ТРУДУ DANIELLE ABRILDEMBER3, 2020FORTUNE
В этом обмене нет волшебных решений, но мы делаем все возможное, чтобы изложить проблему и обсудить, что мы можем сделать на индивидуальном уровне, чтобы просеять ее. все дерьмо, что идет на нашем пути.
НАША ПРОБЛЕМА С ДЕЗИНФОРМАЦИЕЙ БУДЕТ УСТРАНЯТЬСЯ НАМНОГО, НАМНОГО ХУЖЕ ILLINGOBER 6, 2020VOX
Хоуи, получивший штраф после того, как ругался с девушками и заявил полиции, что их встреча была «чушью», нанял адвоката, чтобы защитить его в суде, пока он был в отпуске.
ТЕ, КТО ЗАЯВЛЯЕТСЯ МАТЕРИАЛЬНЫМИ ЯЗЫКАМИ, ГОВОРЯТ, ЧТО ИХ ЕДИНСТВЕННЫМ ПРЕСТУПЛЕНИЕМ БЫЛА ГОВОРЯТ ОБРАТНО НУКСИС 9 СЕНТЯБРЯ 2020 ГОЛОС САН-ДИЕГО
Как пагубный побочный эффект, онлайн-взаимодействия между реальными людьми могут ухудшиться из-за сохраняющейся угрозы искусственного бреда.
ДОБРО ПОЖАЛОВАТЬ НА СЛЕДУЮЩИЙ УРОВЕНЬ БЫСТРОЙ — ВЫПУСК 89: ТЕМНЫЙ СИДЕРАФАЭЛ МИЛЛИЭРЕЗЕНТА 9, 2020NAUTILUS0012
Тезаурус Роже 21-го века, третье издание Copyright © 2013, Philip Lief Group.
HOGWASH Synonyms: 24 Synonyms & Antonyms for HOGWASH
See definition of hogwash on Dictionary.com
- noun nonsense
synonyms for hogwash
- BS
- absurdity
- balderdash
- baloney
- bull
- bunk
- debris
- drivel
- foolishness
- hokum
- hooey
- poppycock
- refuse
- ridiculousness
- rot
- rubbish
- trash
- twaddle
- horsefeathers
На этой странице вы найдете 63 синонима, антонима и слова, относящиеся к слову фигня, такие как: абсурдность, чушь, вздор, bs, бык и койка.
Antonyms для Hogwash
Наиболее соответствующие
- Активы
- Власти
- Собственность
- Sense
- True
Roget’s 21 -й County Compyr.
ПОПРОБУЙТЕ ИСПОЛЬЗОВАТЬ фигню
Посмотрите, как выглядит ваше предложение с разными синонимами.
Символы: 0/140
ВИКТОРИНА
Заполните ваши ответы на эту викторину по налоговым условиям!
НАЧНИТЕ ВИКТОРИНУКак использовать ерунду в предложении
Этот горнолыжник и дайвер могут подумать, что рекомендация Национального фонда сна о семи-девяти часах для молодых людей — чепуха, поэтому их решение игнорировать ее вполне разумно. .
ЭЛИТНЫЕ СПОРТСМЕНЫ НЕ СПЯТ ТАК МНОГО, ЧТО ТЫ ДУМАЕШЬМИРХАШЕМ20 ИЮЛЯ 2021OUTSIDE ONLINE
Это расплывчатое обещание службы безопасности было полной чепухой; однако было удивительно, как много он на это рассчитывал.
ПОЛИЦИЯ ВАШЕЙ ПЛАНЕТЫ ДЕЛЬ РЕЙ
Каким-то образом он завладел пустырем за трактиром на Хогвош-стрит.
НОВЫЙ ЕЖЕМЕСЯЧНЫЙ ЖУРНАЛ HARPER’S, ТОМ. II, НЕТ. X., МАРТ 1851 РАЗЛИЧНЫЕ
Слишком много неправильных вещей, слишком много претенциозных представлений, слишком много просто старой чепухи.
МОЙ КОРАБЛЬ — КОЛУМБУССТИФЕН УАЙЛДЕР
Хогвош был побежден, как и все фавориты, и победил аутсайдер.
ИСТОРИИ ДЯДИ ДЖО ЭДВАРД ХАГЕССЕН НЭЧБУЛЛ-ХАГЕССОН, ПЕРВЫЙ БАРОН БРАБУРН
Друзья мои, я слышал клятвы, которые Паакер излил на наши чистые алтари, как помои, которые люди ставят перед свиньями.
UARDA, COMPLETEGEORG EBERS
Что толку от твоего козла из этой фигни про охоту?
Снежный снег в Eagle’sbret Harte
Слова, связанные с Hogwash
- Bunk
- Fudge
- Hogwash
- Hokum
- Hooey 9
- .