Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. foo = {{a, b}, {c, d, e, f}, {x, y}};
  2. foo = Map[ToString, {{a, b, c}, {f, g, h}, {u, v, x}, {r, s, t}}, {2}];
  3. foo = Map[ToString, {{a, b, c}, {f, g, h}, {u, v, x}, {r, s, t}}, {2}];
  4. foo = {{a, b}, {c, d, e, f}, {x, y}};
  5. p = Partition[foo, 2, 1];
  6. edgesList = Flatten[Outer[List, #[[1]], #[[2]]] & /@ p, 2];
  7. edges = DirectedEdge @@@ edgesList;
  8. Table[idxWeight[ss] = 1, {ss, edgesList}];
  9. subSets = Subsets[foo, {2}];
  10. allPairs = Flatten[Tuples /@ subSets, 1];
  11. allEndToEnd = Tuples[{First@foo, Last@foo}];
  12. kk = {};
  13.  
  14. ii = 0;
  15. (* perturbation stack*)
  16. pertStack = ConstantArray[{}, Length@allEndToEnd];
  17. While[Union@Flatten[Subsets[#, {2}] & /@ kk, 1] != allPairs &&
  18. ii < 500,
  19. g = Graph[edges,
  20. EdgeWeight -> Table[idxWeight@ss, {ss, edgesList}]];
  21. sp = FindShortestPath[g,
  22. Sequence @@ allEndToEnd[[Mod[ii++, Length@allEndToEnd, 1]]]];
  23. pathEdges = Partition[sp, 2, 1];
  24. kk = Union[kk, {sp}];
  25. (idxWeight[#]++) & /@ Partition[sp, 2, 1];
  26. pertStack[[Mod[ii, Length@allEndToEnd, 1]]] = kk;
  27. If[Equal @@ pertStack,
  28. idxWeight[#]++ & /@ RandomChoice[edgesList, 3]];
  29. ];
  30. kk
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement