Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Best-First Algorithm in Ruby?

1 view
Skip to first unread message

Mason Kelsey

unread,
Sep 18, 2009, 1:10:27 AM9/18/09
to
[Note: parts of this message were removed to make it a legal post.]

I am writing a Best-First Search program in Ruby but I have never done tree
searches before and so am a bit lost. This routine is being applied to the
8-puzzle problem of moving 8 tiles plus a blank space in an 3 x 3 grid.
Since I am new to both Ruby and search algorithms in general, I a looking
for a template or actual code as a Ruby program. I've already written the
Manhattan move method to determine the heuristic value of each state, and
the move function for making a move, and a third method for determining what
moves are possible. But writing the first-best routine without some
template to use is beyond my current capabilities. I'm trying to move
beyond that limitation.

I've done a Google search and referenced five books on Ruby and not found
any good template, pseudo code, or even a Ruby routine that would do the
searches. Does anyone know of a coded example in Ruby of the Best-First
search algorithm? It it is applied to the 8-puzzle that is even better, but
if I can find a template I should be able to apply it to my problem.

Thanks in advance for being pointed in the right direction.

Always something new to learn.

No Sam

Axel Etzold

unread,
Sep 18, 2009, 5:07:06 AM9/18/09
to

-------- Original-Nachricht --------
> Datum: Fri, 18 Sep 2009 14:10:27 +0900
> Von: Mason Kelsey <mason...@gmail.com>
> An: ruby...@ruby-lang.org
> Betreff: Best-First Algorithm in Ruby?

> I am writing a Best-First Search program in Ruby but I have never done
> tree
> searches before and so am a bit lost. This routine is being applied to
> the
> 8-puzzle problem of moving 8 tiles plus a blank space in an 3 x 3 grid.

Dear Mason,


> Since I am new to both Ruby

welcome!
If you are looking for a nice and short introduction to Ruby, you can have
a look at this tutorial :

http://pine.fm/LearnToProgram/?Chapter=00

It's an introduction that will take you all the way from no computing knowledge at all to coding object-orientedly ... so maybe it is a good idea to go through this first.

With respect to search algorithms, your problem can be solved using the
A* algorithm, which is a best-first search algorithm. You can
find a description of how to apply it here:

http://www.redfish.com/dkunkle/mypapers/EightPuzzle.pdf ,

In the Ruby community, there is a collection of problems and Ruby solutions called Ruby quiz, whose solutions are thoughtfully commented by the maintainers of the quiz.
A*-search is here:

http://rubyquiz.com/quiz98.html

And of course, you can adapt the pseudocode on the Wikipedia A* search page.


Best regards,

Axel
--
GRATIS f�r alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01

0 new messages