Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. class Kocurkovo:
  2. def __init__(self, meno_suboru):
  3. self.graf = {}
  4. self.krizovatka = set()
  5. self.hrana = {}
  6. with open(meno_suboru) as file:
  7. for line in file:
  8. line = line.strip().split()
  9. x1, y1, x2, y2 = int(line[0]), int(line[1]), int(line[2]), int(line[3])
  10. v1, v2 = (x1, y1), (x2, y2)
  11.  
  12. self.krizovatka.add(v1)
  13. self.krizovatka.add(v2)
  14.  
  15. if v1 not in self.graf: self.graf[v1] = {}
  16. if v2 not in self.graf: self.graf[v2] = {}
  17.  
  18. self.graf[v1][v2] = set()
  19. self.graf[v2][v1] = set()
  20.  
  21. vaha = round((((x1 - x2)**2) + ((y1 - y2)**2))**.5)
  22.  
  23. self.graf[v1][v2] = vaha
  24. self.graf[v2][v1] = vaha
  25.  
  26. def krizovatky(self):
  27. return self.krizovatka
  28.  
  29. def ulica(self, k1, k2):
  30. if k1 in self.graf and k2 in self.graf[k1]:
  31. return self.graf[k1][k2]
  32. else: return None
  33.  
  34.  
  35.  
  36. ## def backtracking(self):
  37. ## v1 = self.cesta[-1]
  38. ##
  39. ## for v2 in self.graf[v1]:
  40. ## if self.sucet > self.medzi:
  41. ## self.sucet = self.medzi
  42. ## self.cesta = self.prejdena
  43. ##
  44. ## if v2 != self.ciel:
  45. ##
  46. ## self.prejdena.append(v2)
  47. ##
  48. ## self.hrany.add((v1, v2))
  49. ## self.hrany.add((v2, v1))
  50. ##
  51. ## self.backtracking()
  52. ## if self.sucet > self.medzi:
  53. ## return
  54. ##
  55. ## self.prejdena.pop()
  56. ## self.hrany.remove((v1, v2))
  57. ## self.hrany.remove((v2, v1))
  58.  
  59.  
  60. def trasa(self, k1, k2):
  61. self.cesta = []
  62. self.sucet = 0
  63.  
  64.  
  65. self.medzi = 0
  66. self.start = k1
  67. self.ciel = k2
  68. self.prejdena = []
  69.  
  70. self.hrany = {}
  71. ## self.backtracking()
  72. ##
  73. def backtracking(v1, cesta, suc):
  74. if v1 == k2 and suc > self.sucet:
  75. self.cesta = cesta
  76. self.sucet = suc
  77. elif suc > self.sucet:
  78. self.cesta = cesta
  79. self.sucet = suc
  80.  
  81. for v2 in self.graf[v1]:
  82. if ((v1, v2)) not in cesta and ((v2, v1)) not in cesta:
  83. backtracking(v2, [v2] + cesta, suc + self.graf[v1][v2])
  84.  
  85. backtracking(k1, [], 0)
  86.  
  87. return self.cesta
  88.  
  89. if __name__ == '__main__':
  90. k = Kocurkovo('subor1.txt')
  91. print('krizovatky =', k.krizovatky())
  92. for k1, k2 in ((120, 200), (100, 100)), ((50, 210), (50, 210)), ((190, 220), (120, 200)):
  93. print(f'ulica({k1}, {k2}) = {k.ulica(k1, k2)}')
  94. for k1, k2 in ((50, 210), (150, 50)), ((120, 200), (190, 220)), ((50, 210), (50, 210)):
  95. print(f'trasa({k1}, {k2}) = {k.trasa(k1, k2)}')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement