2

Testing reachability of a node in a graph (directed), can be done using cellualr Automata? Actually what's in mind, is to implement an algorithm that checks reachability of a nod from a specified vertex, using CA. Is it even possible? Is CA capable of doing that?

Any idea?

Faria
  • 21
  • 1
  • I can't answer wether it is doable, but I strongly doubt it would be better than performing a regular graph search, such as A* or Dijkstra's algorithm. – carlpett Aug 19 '11 at 13:41

3 Answers3

2

The answer to your first question is yes, since Conway's Game of Life is turing complete. That roughly means that cellular automata (particularly the Game of Life) can compute any function your PC can.

I am not familiar with the details of the proof but I would assume that it is based on some way of transforming a Turing machine into an instance of the Game of Life. If you can construct a Turing machine to solve the problem you can probably transform it into a cellular automaton using that technique.

I would recommend using a depth first search as the underlying algorithm since it is much simpler than Dijkstra's Algorithm and a cellular automaton is probably not an efficient way of solving the problem anyway.

Jørgen Fogh
  • 7,516
  • 2
  • 36
  • 46
  • Thanks for your reply. As you mentioned, DFS or BFS are simpler than Dijkstra's algorithm. It's good idea to first construct Turing Machine to solve this problem, and then transforming it into a cellualr automata. However, it seems there is no explicit resource on the web, because I tried a search for solving this problem with Turing Machine, but found nothing. Anyway, thanks for your reply. Any further guidance? – Faria Aug 19 '11 at 14:11
  • In general, to solve a problem with a TM, you are going to first need to find a good way to encode the problem. For instance, here, you can encode it as two sets: vertices and edges. For instance, let an input instance be 0^V.111.(0^a.1.0^b)^E.11111, where V is the number of vertices and all a, b < V and, E is the number of edges, and there exist edges between vertex #a and vertex #b for all pairs a, b (the dot means concatenation). Then come up with an algorithm using as many tapes as you like for scratch work, and use the multi-tape construction to get a single-tape TM. Voila! – Patrick87 Aug 19 '11 at 15:48
1

I know of no general cellular automaton for reachability in arbitrary graphs, but in the mid 1990s there was some research into maze-solving in rectangular grid mazes using cellular automata. One accessible description of the technique can be found here. If you have ACM access, you can read the original paper here. It should not be particularly difficult to adapt the algorithm for pathfinding to reachability, assuming that your graph is a 2D grid.

I will keep looking and see if I can find a more general algorithm.

templatetypedef
  • 362,284
  • 104
  • 897
  • 1,065
-2

I cannot say for sure that CA will do what you want. But Dijkstra can be used to determine the shortest path (also if a path exists) from one node to another. The Complexity of Dijkstra is high though.

Andrew T Finnell
  • 13,417
  • 3
  • 33
  • 49
  • Yes, I know Dijkstra can find shortest path, but I need to do it, with CA. But I hesitate it's possible. – Faria Aug 19 '11 at 13:45
  • This doesn't answer the question. Moreover, I disagree that the complexity of Dijksrra's algorithm is high; it runs in a fast O(E + V lg V) – templatetypedef Aug 19 '11 at 15:37
  • @templatetypedef Sure _if_ it uses a min-priority queue. If it doesn't then it's O(n^2) which is inefficient. – Andrew T Finnell Aug 19 '11 at 18:09
  • @Andrew Finnell- That's true, but most implementations do use a priority queue. In fact, I haven't come across a Dijkstra's implementation that worked any other way. – templatetypedef Aug 19 '11 at 19:05