[erlang-questions] write the ant simulation in Erlang?

David Mercer dmercer@REDACTED
Fri Oct 10 23:43:00 CEST 2008


Actually Danny G's approach has merit.  Ant on square A wants to move to
square B.  The messages passed are quite simple:

 

1.	A: B ! {A, 'I have an ant who wants to move to you'}
2.	B: Either:

a.	A ! 'Your ant moved here successfully'
b.	A ! 'No can do, mate; I'm already occupied'

 

In the case of 2a, square A marks itself vacant and can now respond with its
own 'Your ant moved here successfully' message when another square requests
passage for its ant.  In case of 2b, square A tries another square.

 

DBM

 

 

 

  _____  

From: erlang-questions-bounces@REDACTED
[mailto:erlang-questions-bounces@REDACTED] On Behalf Of Rick R
Sent: Friday, October 10, 2008 15:39
To: Erlang-Questions (E-mail)
Subject: Re: [erlang-questions] write the ant simulation in Erlang?

 

 

2008/10/10 Daniel Goertzen <daniel.goertzen@REDACTED>

How about 1 process for each cell, but no processes for the ants.  The ants
exist as state inside each cell and as messages interrogating neighboring
cells.  I think you'll get nice fine-grained localized transactions this
way.

Dan.


Using that method, I think you'll still have the same issue with
transactions. For instance: if two cells decide to move their ant to the
same adjacent cell, you will have the same conflict and one ant will have to
be rolled back. 
It may not even be more efficient message-wise because instead of the ant
sending a message to an adjacent cell, the cell simply sends the same
message to the adjacent cell on behalf of the ant. 

Of course we could go existentialist and say that there is no board except
what the ants perceive, and since they can only see one square in any
direction, that would imply that there is 1 process for each ant and no
process for a board (or any data for that matter).  This would mean that if
there are no ants on a section of board it would cease to exist. The only
way to reconstitute it would be to mathematically prove that it exists. e.g.
The ant was at 5,5 and moved 3 east,  8 < 64, therefore, the board exists.  

One could extend this method with a Paxos algorithm so that the ants could
achieve consensus as to the existence of Board. 



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20081010/35103f7e/attachment.htm>


More information about the erlang-questions mailing list