Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "#\n",
  8. "# A - B - I\n",
  9. "# /\n",
  10. "# /\n",
  11. "# /\n",
  12. "# /\n",
  13. "# /\n",
  14. "# /\n",
  15. "# /\n",
  16. "# /\n",
  17. "# /\n",
  18. "# C - D - E\n",
  19. "# |\n",
  20. "# F - G - H"
  21. ]
  22. },
  23. {
  24. "cell_type": "code",
  25. "execution_count": 42,
  26. "metadata": {},
  27. "outputs": [],
  28. "source": [
  29. "grafo = {\n",
  30. " \"A\": [\"B\"],\n",
  31. " \"B\": [\"B\", \"I\"],\n",
  32. " \"C\": [\"D\", \"I\"],\n",
  33. " \"D\": [\"C\", \"E\",\"G\"],\n",
  34. " \"E\": [\"D\"],\n",
  35. " \"F\": [\"G\"],\n",
  36. " \"G\": [\"F\", \"H\", \"D\"],\n",
  37. " \"H\": [\"G\"],\n",
  38. " \"I\": [\"B\", \"C\"],\n",
  39. "}"
  40. ]
  41. },
  42. {
  43. "cell_type": "code",
  44. "execution_count": 43,
  45. "metadata": {},
  46. "outputs": [],
  47. "source": [
  48. "def calc_tot_comp(grafo):\n",
  49. " visitado = []; comp = [];\n",
  50. " for i in list(grafo.keys()):\n",
  51. " if i not in visitado:\n",
  52. " visitado.append(i)\n",
  53. " visita_vizinho(grafo, i, visitado)\n",
  54. " comp.append(visitado.copy())\n",
  55. " return comp\n",
  56. " \n",
  57. "def visita_vizinho(grafo, atual, visitado):\n",
  58. " for i in grafo[atual]:\n",
  59. " if i not in visitado:\n",
  60. " visitado.append(i)\n",
  61. " visita_vizinho(grafo, i, visitado)"
  62. ]
  63. },
  64. {
  65. "cell_type": "code",
  66. "execution_count": 45,
  67. "metadata": {},
  68. "outputs": [
  69. {
  70. "data": {
  71. "text/plain": [
  72. "1"
  73. ]
  74. },
  75. "execution_count": 45,
  76. "metadata": {},
  77. "output_type": "execute_result"
  78. }
  79. ],
  80. "source": [
  81. "len(calc_tot_comp(grafo))"
  82. ]
  83. },
  84. {
  85. "cell_type": "markdown",
  86. "metadata": {},
  87. "source": [
  88. "\n",
  89. "Vamos agora testar o algoritmo de ciclo hamiltoniano\n",
  90. "\n",
  91. "\n"
  92. ]
  93. },
  94. {
  95. "cell_type": "code",
  96. "execution_count": 52,
  97. "metadata": {},
  98. "outputs": [],
  99. "source": [
  100. "def CiHam(grafo, size, pt, path=[]):\n",
  101. " print('Hamilton chamado com origem={}, path={}'.format(pt, path))\n",
  102. " if pt not in set(path):\n",
  103. " path.append(pt)\n",
  104. " if len(path)==size:\n",
  105. " return path\n",
  106. " for pt_next in grafo.get(pt, []):\n",
  107. " res_path = [i for i in path]\n",
  108. " candidate = CiHam(grafo, size, pt_next, res_path)\n",
  109. " if candidate is not None:\n",
  110. " return candidate\n",
  111. " print('Nos {} caminho termina '.format(path))\n",
  112. " else:\n",
  113. " print('Nos {} esta no ciclo {}'.format(pt, path))"
  114. ]
  115. },
  116. {
  117. "cell_type": "code",
  118. "execution_count": 53,
  119. "metadata": {},
  120. "outputs": [
  121. {
  122. "name": "stdout",
  123. "output_type": "stream",
  124. "text": [
  125. "Hamilton chamado com origem=A, path=[]\n",
  126. "Hamilton chamado com origem=B, path=['A']\n",
  127. "Hamilton chamado com origem=B, path=['A', 'B']\n",
  128. "Nos B esta no ciclo ['A', 'B']\n",
  129. "Hamilton chamado com origem=I, path=['A', 'B']\n",
  130. "Hamilton chamado com origem=B, path=['A', 'B', 'I']\n",
  131. "Nos B esta no ciclo ['A', 'B', 'I']\n",
  132. "Hamilton chamado com origem=C, path=['A', 'B', 'I']\n",
  133. "Hamilton chamado com origem=D, path=['A', 'B', 'I', 'C']\n",
  134. "Hamilton chamado com origem=C, path=['A', 'B', 'I', 'C', 'D']\n",
  135. "Nos C esta no ciclo ['A', 'B', 'I', 'C', 'D']\n",
  136. "Hamilton chamado com origem=E, path=['A', 'B', 'I', 'C', 'D']\n",
  137. "Hamilton chamado com origem=D, path=['A', 'B', 'I', 'C', 'D', 'E']\n",
  138. "Nos D esta no ciclo ['A', 'B', 'I', 'C', 'D', 'E']\n",
  139. "Nos ['A', 'B', 'I', 'C', 'D', 'E'] caminho termina \n",
  140. "Hamilton chamado com origem=G, path=['A', 'B', 'I', 'C', 'D']\n",
  141. "Hamilton chamado com origem=F, path=['A', 'B', 'I', 'C', 'D', 'G']\n",
  142. "Hamilton chamado com origem=G, path=['A', 'B', 'I', 'C', 'D', 'G', 'F']\n",
  143. "Nos G esta no ciclo ['A', 'B', 'I', 'C', 'D', 'G', 'F']\n",
  144. "Nos ['A', 'B', 'I', 'C', 'D', 'G', 'F'] caminho termina \n",
  145. "Hamilton chamado com origem=H, path=['A', 'B', 'I', 'C', 'D', 'G']\n",
  146. "Hamilton chamado com origem=G, path=['A', 'B', 'I', 'C', 'D', 'G', 'H']\n",
  147. "Nos G esta no ciclo ['A', 'B', 'I', 'C', 'D', 'G', 'H']\n",
  148. "Nos ['A', 'B', 'I', 'C', 'D', 'G', 'H'] caminho termina \n",
  149. "Hamilton chamado com origem=D, path=['A', 'B', 'I', 'C', 'D', 'G']\n",
  150. "Nos D esta no ciclo ['A', 'B', 'I', 'C', 'D', 'G']\n",
  151. "Nos ['A', 'B', 'I', 'C', 'D', 'G'] caminho termina \n",
  152. "Nos ['A', 'B', 'I', 'C', 'D'] caminho termina \n",
  153. "Hamilton chamado com origem=I, path=['A', 'B', 'I', 'C']\n",
  154. "Nos I esta no ciclo ['A', 'B', 'I', 'C']\n",
  155. "Nos ['A', 'B', 'I', 'C'] caminho termina \n",
  156. "Nos ['A', 'B', 'I'] caminho termina \n",
  157. "Nos ['A', 'B'] caminho termina \n",
  158. "Nos ['A'] caminho termina \n"
  159. ]
  160. }
  161. ],
  162. "source": [
  163. "CiHam(grafo, 9, \"A\")"
  164. ]
  165. },
  166. {
  167. "cell_type": "code",
  168. "execution_count": null,
  169. "metadata": {},
  170. "outputs": [],
  171. "source": []
  172. },
  173. {
  174. "cell_type": "code",
  175. "execution_count": null,
  176. "metadata": {},
  177. "outputs": [],
  178. "source": []
  179. }
  180. ],
  181. "metadata": {
  182. "kernelspec": {
  183. "display_name": "Python 3",
  184. "language": "python",
  185. "name": "python3"
  186. },
  187. "language_info": {
  188. "codemirror_mode": {
  189. "name": "ipython",
  190. "version": 3
  191. },
  192. "file_extension": ".py",
  193. "mimetype": "text/x-python",
  194. "name": "python",
  195. "nbconvert_exporter": "python",
  196. "pygments_lexer": "ipython3",
  197. "version": "3.6.5"
  198. }
  199. },
  200. "nbformat": 4,
  201. "nbformat_minor": 2
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement