Как я могу представить цикл Эйлера на графе? - PullRequest
0 голосов
/ 12 мая 2019

Мне нужно оживить путь Эйлера. У меня есть код для случайного блуждания по любому графику, но я не могу разработать программу, представляющую конкретное блуждание, которое я хочу.

Это мой код для случайной прогулки

Cammino[g_] = 
 Block[{graph = g, start, path}, 
  start = RandomChoice[VertexList[graph]];
  path = NestList[RandomChoice[AdjacencyList[graph, #]] &, start, 
    RandomInteger[{2, 30}]];
  ListAnimate[
   Table[Graph[graph, 
     VertexStyle -> 
      Append[Map[Rule[#, Pink] &, Union[path[[1 ;; v]]]], 
       path[[v]] -> Red], 
     EdgeStyle -> 
      Evaluate[(UndirectedEdge[#1, #2] -> Directive[Red, Thick]) & @@@
         Partition[path[[1 ;; v]], 2, 1]], VertexSize -> Large], {v, 
     Length[path]}]]] 

И это моя попытка на эйлеровом цикле

Euleriano[g_] = 
 Block[{grafo = g, inizio, cammino}, 
  inizio = FindEulerianCycle[grafo][[1]][[1]][[1]];
  cammino = 
   NestList[RandomChoice[AdjacencyList[grafo, #]] &, inizio, 
    RandomInteger[{2, 30}]];
  ListAnimate[
   Table[Graph[grafo, 
     VertexStyle -> 
      Append[Map[Rule[#, Pink] &, Union[cammino[[1 ;; v]]]], 
       cammino[[v]] -> Red], 
     EdgeStyle -> 
      Evaluate[(UndirectedEdge[#1, #2] -> Directive[Red, Thick]) & @@@
         Partition[cammino[[1 ;; v]], 2, 1]], 
     VertexSize -> Large], {v, Length[cammino]}]]] 

Для пояснения: cammino = прогулка, inizio = старт, grafo = график. Я думаю, что мне нужно изменить определение «cammino» во втором фрагменте кода, чтобы обход проходил после определения, полученного с помощью функции Mathematica FindEulerianCycle []. Мой вопрос: как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...