本帖最后由 chungyuandye 于 2011-1-4 08:26 编辑
- maze=ImageData[\!\(\*
- GraphicsBox[
- TagBox[RasterBox[CompressedData["
- 1:eJylUskNgDAMi8QCPFiAlRihC7D/i0NFkbHTlCOCqkprO3E6l3Upg5lN13/u
- /8Q4b/Qdya0ReB9J6qljVcWxvnoSj3LdHKty2CNhidbZahdqiErUpPOgUKs8
- UtERIEqxNALceA25LeQG1tOtua7h9J9glUovhP1i40mm1S+9BNJVbFe35Weo
- gpCQmXTD+vUo9NnuoyTbE+yrMHh1n2MHv03QpQ==
- "],{{0,20},{20,0}},{0,
- 255},
- ColorFunction->RGBColor],
- BoxForm`ImageTag["Byte",ColorSpace->"RGB",Interleaving->True],
- Selectable->False],
- BaseStyle->"ImageGraphics",
- ImageSize->{246.,Automatic},
- ImageSizeRaw->{20,20},
- PlotRange->{{0,20},{0,20}}]\)][[;;,;;,3]][[2;;-2,2;;-2]]
- maze//Dimensions
- maze//ArrayPlot
- n1=Table[If[maze[[i,j]]*maze[[i,j+1]]==1,
- UndirectedEdge[Length@maze*(i-1)+j,Length@maze*(i-1)+j+1]],{i,1,Length@maze},{j,1,Length@maze-1}];
- n2=Table[If[maze[[i,j]]*maze[[i+1,j]]==1,UndirectedEdge[Length@maze*(i-1)+j,Length@maze*i+j]],{i,1,Length@maze-1},{j,1,Length@maze}];
- medge=Select[Flatten[{n1,n2}],Length@#>=2&]
- mg=Graph[Range[Length@maze*Length@maze],
- medge,{FrameTicks->None,VertexCoordinates->
- Flatten[Table[{i,j},{i,0,Length@maze-1},{j,0,Length@maze-1}],1]}]
- mpath=FindShortestPath[mg,First@VertexList[mg],Last@VertexList[mg]]
- HighlightGraph[mg,PathGraph@FindShortestPath[mg,First@VertexList[mg],Last@VertexList[mg]]]
- sp[k_]:=Flatten[{UndirectedEdge[#[[1]],#[[2]]]->{Thickness[0.01],
- Red}}&/@Partition[FindShortestPath[mg,First@VertexList[mg],Last@VertexList[mg]],
- 2,1]][[1;;k]]
- Animate[Graph[Range[Length@maze*Length@maze],
- medge,{FrameTicks->None,VertexCoordinates->Flatten[
- Table[{i,j},{i,0,Length@maze-1},{j,0,Length@maze-1}],
- 1]},GraphHighlightStyle->Thick[0.01],
- EdgeStyle->sp[z]],{z,1,52,1}]
复制代码 |