Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Serg Belyaev                         2:5015/166.7   08 Aug 2001  21:41:41
 To : Vadim Guchenko
 Subject : Sokoban (логическая игра)
 -------------------------------------------------------------------------------- 
 
 06-Aug-01 20:47:10, Vadim Guchenko wrote to All
           Subject: Sokoban (логическая игра)
 
  VG> Hi, All.
 
  VG> Существует ли алгоритм прохождения лабиринтов игры Sokoban? Если
  VG> кто не знает, там грузчик толкает ящики. Их нужно поставить на
  VG> определенные места. Кто-нибудь занимался написанием солвера?
 
 В понедельник скачал неплохой солвер:
 www.xylo.freeserve.co.uk/nSk3v112.exe
 (Takaken.Solver)
 
 Сам также занимаюсь этой игрушкой. Для начала реализовал полный
 перебор для небольших комнат - хотелось оценить число
 возможных позиций. Побочным результатом была генерация
 новых комнат - очень любопытных, например:
 
 ########
 #  #  ##
 #  $. ##
 # * * ##
 #@#$# ##
 # *.. ##
 ###$   #
 ###    #
 ########
 
 Вручную с подобными задачками справиться затруднительно,
 а вот вышеприведенный солвер решает ее почти мгновенно.
 
 Теперь об алгоритме.
 Для некоторого сокращения рассматриваемых позиций я
 пошел от конечной позиции, которой присвоил 0-ой уровень.
 Если имеется набор i-ого уровня, то легко получить
 набор i+1-го уровня, при этом ранее встреченные позиции
 уже не включаются.
 Да, забыл сказать, под позицией понимается упорядоченный
 набор ящиков и связная область с человечком, которая
 задается клеткой с минимальным номером (например).
 В противном случае число позиций катастрофически вырастает.
 Т.е. каждая реальная позиция сначала "нормализуется":
 связная область определяется каким-либо алгоритмом
 закрашивания, ящики сортируются.
 В общем получается, что к i-ому уровню относятся те и
 только те позиции, из которых можно достигнуть конечной
 позиции за i перемещений ящиков (минимально).
 
 Число позиций для приведенного выше примера по уровням
 распределяется так:
 1:5    6:55   11:153  16:119  21:139  26:443  31:351  36:87  41:15
 2:9    7:74   12:149  17:99   22:189  27:468  32:290  37:55  42:11
 3:19   8:96   13:134  18:83   23:254  28:450  33:215  38:39  43:6
 4:27   9:124  14:136  19:84   24:321  29:415  34:168  39:30  44:2
 5:39  10:148  15:127  20:105  25:397  30:376  35:125  40:21
 
 Для более просторных комнат можно наблюдать сотни тысяч позиций,
 выше мой алгоритм уже не может осилить.
 Hо... большое число позиций обычно говорит о достаточно большой
 свободе выбора и о простых решениях - наверняка в этом случае
 должны хорошо работать простые эвристики (но я пока не пробовал).
 
 <SVB>
 --- Terminate 5.00/Pro 
  * Origin: Crazy Pentium III. (2:5015/166.7)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Sokoban (логическая игра)   Vadim Guchenko   06 Aug 2001 21:47:10 
 Re: Sokoban (логическая игра)   Andrzej Novosiolov   06 Aug 2001 20:45:35 
 Re: Sokoban (логическая игра)   Oleg Ponomarev   07 Aug 2001 10:48:45 
 Re: Sokoban (логическая игра)   Andrey Dashkovsky   06 Aug 2001 23:19:30 
 Sokoban (логическая игра)   Kostya Sudilovsky   11 Aug 2001 00:01:02 
 Re: Sokoban (логическая игра)   Andrey Dashkovsky   17 Aug 2001 16:25:33 
 Sokoban (логическая игра)   Serg Belyaev   08 Aug 2001 21:41:41 
 Sokoban (логическая игра)   Kostya Sudilovsky   11 Aug 2001 00:18:13 
 Sokoban (логическая игра)   Vadim Guchenko   13 Aug 2001 18:51:46 
Архивное /ru.algorithms/337742d12fd4.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional