开发者

Graph representation

开发者 https://www.devze.com 2022-12-27 00:19 出处:网络
Given graph, how could i represent it using adj matrix?. I have read lots 开发者_Python百科of tutorials, post, slides, etc but i cant get my head round it, i just need that little push.

Given graph, how could i represent it using adj matrix?. I have read lots 开发者_Python百科of tutorials, post, slides, etc but i cant get my head round it, i just need that little push.

Graph representation


Here's my attempt for the first horizontal line of the maze:

   A0 A1 A2 A3 A4 A5 A6 A7
A0 0  1  0  0  0  0  0  0
A1 1  0  0  0  0  0  0  0
A2 0  0  0  1  0  0  0  0
A3 0  0  1  0  0  0  0  0
A4 0  0  0  0  0  1  0  0
A5 0  0  0  0  1  0  0  0
A6 0  0  0  0  0  0  0  0
A7 0  0  0  0  0  0  0  0

So you can see from this that your going to end up with a symmetrical matrix due to the undirected nature of your edges and that its going to be sparsely populated.

EDIT: Matrix vs Lists

The wikipedia entry for adjacency list has some good points on the algorithmic benefits of each.

EDIT:

Wikipedia entry for Adjacency Matrix :+)


Every letter-number combination is one node in your graph, i.e., from A0, A1, A2, ... to F5, F6, F7. Your graph has 48 (8 columns times 6 rows in your maze) nodes, so you'll need a 48x48 matrix. If you treat it as boolean, you'll set all fields to false except the ones where there is a connection between two nodes, e.g. A0 to A1 would mean that the A0 row has a true value in the A1 column, and vice versa (because your graph is undirected).


Another way would be to have 2 boolean matrices named Hor and Ver to track the possibility of horizontal and vertical movement respectively.

Hor Matrix: Dimension:6x9
[X,YZ] represents the possiblity of a horizontal movement from [X,Y] to [X,Z] on the real board.
-1 represents the boundary

example: [A,01] is true and so is [F,-10]. But [B,23] is false.

   -10 01 12 23 34 45 56 67 7-1
A
B
C
D
E
F

Similarly

Ver Matrix: Dimension: 7x8
[XY,Z] represents the possiblity of a vertical movement from [X,Z] to [Y,Z] on the real board.
Capital o in the row represent boundary.
example: [DE,0] is true and so is [BC,7]. But [CD,0] is false.

    0 1 2 3 4 5 6 7

OA
AB
BC
CD
DE
EF
FO
0

精彩评论

暂无评论...
验证码 换一张
取 消