IDA* с головоломкой из 15, нужна помощь

Мне нужно сделать визуализацию IDA*(итеративного углубления звезды) алгоритма, когда он решает задачу из 15 головоломок. Точно, мне нужно визуализировать дерево и головоломку.

Алгоритм IDA* аналогичен алгоритму A*. ссылка 1 2 3

Мне нужно реализовать 3 вещи:

1) Код IDA*.

2)После этого IDA* связалась с проблемой(15-головоломка).

3)И после этого мне нужно визуализировать дерево алгоритма.

Но я считаю, что кто-то уже реализовал код для IDA*, выполняющего задачу с 15 головоломками. Мне нужна ваша помощь, чтобы найти этот исходный код, чтобы я не тратил 2 месяца на написание кода, который до этого был написан кем-то другим, чтобы у меня было время сосредоточиться на визуализации.

15-головоломка ссылка 1 , ссылка 2

Я немного знаю C, C++ и C#.

Мне нужен простой исходный код, который я бы понял, в котором вы вводите таблицу как головоломку, а она возвращает вам таблицу с решенной головоломкой.

Во-вторых, какой язык программирования из трех выше вы мне предлагаете использовать для визуализации?

Я нашел несколько реализаций:

IDA* в LISP

A* в C++, мне нужен IDA*

IDA* в Java

IDA* в ссылке на псевдокод1 ссылка2 ссылка3

IDA* в C

IDA* с головоломкой из 15

головоломка из 15 решений с помощью апплета

A * и IDA *, которые решают головоломку скольжения (в этом используются шаблоны, которые не определены)


person george mano    schedule 28.12.2011    source источник
comment
Если это ключевой компонент вашего исследования, задавать этот вопрос глупо — вам будет трудно присвоить себе оценку, и вы не научитесь делать это самостоятельно. Если это не так, подумайте о том, чтобы сослаться на чужую работу, если у вас нет времени делать ее самостоятельно.   -  person Andrew Walker    schedule 01.01.2012
comment
@george mano: см. эту ссылку (однако она в Java) - brian-borowski.com/ Программное обеспечение/Головоломка . Прокрутите вниз до середины страницы. там вы найдете исходный код.   -  person Ashwin    schedule 04.11.2012


Ответы (1)


Для реализации IDA* требуется около десяти минут. Ваша эвристическая функция тривиальна, я думаю, вам, по крайней мере, удалось реализовать манхэттенское расстояние (есть лучшие эвристики, но это подойдет).

Затем вы просто реализуете A*, а затем добавляете критерии порога отсечки. Статья в Википедии, на которую вы ссылаетесь, даже имеет реализацию на Python, которую вы можете просто перевести.

person Pål GD    schedule 27.01.2013