diff --git a/Dijkstra/algo.py b/Dijkstra/algo.py new file mode 100644 index 0000000..51fd726 --- /dev/null +++ b/Dijkstra/algo.py @@ -0,0 +1,74 @@ +# https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm + +graph = { + 'A': [('B', 4), ('C', 2)], + 'B': [('C', 5), ('D', 10)], + 'C': [('D', 3), ('E', 8)], + 'D': [('E', 4), ('F', 11)], + 'E': [('G', 6)], + 'F': [('G', 2)], + 'G': [] +} + +p = {} + +def chemin(predecesseur, debut, fin): + chemin = [] + courant = fin + while courant != debut: + chemin.insert(0, courant) + courant = predecesseur.get(courant) + if courant is None: + return None + chemin.insert(0, debut) + return chemin + + +def initialisation(G, debut): + distances = {key: float('inf') for key in G} + distances[debut] = 0 + return distances + + +def trouve_min(Q, distances): + mini = float('inf') + sommet = None + for s in Q: + if distances[s] < mini: + mini = distances[s] + sommet = s + return sommet + +def poid(s1, s2): + for voisin, poids in graph[s1]: + if voisin == s2: + return poids + return float('inf') + +def distances_update(s1, s2, distances, predecesseur): + poids = poid(s1, s2) + if distances[s2] > distances[s1] + poids: + distances[s2] = distances[s1] + poids + predecesseur[s2] = s1 + +def dijkstra(G, debut='A'): + distances = initialisation(G, debut) + predecesseur = {} + Q = set(G.keys()) + + while Q: + s1 = trouve_min(Q, distances) + if s1 is None: + break + Q.remove(s1) + + for voisin, _ in G[s1]: + if voisin in Q: + distances_update(s1, voisin, distances, predecesseur) + + return distances, predecesseur + +if __name__ == "__main__": + distances, predecesseur = dijkstra(graph, 'A') + print("Distances depuis A :", distances) + print("Chemin le plus court de A à G :", chemin(predecesseur, 'A', 'G')) diff --git a/README.md b/README.md index 23d9653..639f874 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,6 @@ │   ├── constantes.py │   └── raquette.py ├── readme_creator.txt -├── README.html ├── README.md ├── recursivite │   ├── exercice_MJoannic @@ -145,50 +144,51 @@ │   ├── exercice4.py │   ├── exercice5.py │   └── exercice6.py -├── tp6 -│   ├── LSC.py -│   ├── npi.py -│   ├── Pile_List.py -│   ├── Pile_LSC.py -│   ├── Pile_Tuple.py -│   ├── README.md -│   ├── test.py -│   └── TP_Piles.pdf -├── TP6 -│   ├── LSC.py -│   ├── Pile_List.py -│   ├── Pile_LSC.py -│   ├── Pile_Tuple.py -│   ├── test_2.py -│   │   ├── modules.rst -│   │   ├── Pile_List.rst -│   │   ├── Pile_Tuple.rst -│   │   └── test.rst -│   ├── test.py -│   ├── test.py.patch -│   └── TP_Piles.pdf -├── tp6_self -│   ├── LSC.py -│   ├── npi.py -│   ├── Pile_List.py -│   ├── Pile_LSC.py -│   ├── Pile_Tuple.py -│   ├── README.md -│   └── test.py -└── tp_listes_chaines - ├── execute.py - ├── fichiers - │   ├── Chartreuse.csv - │   ├── factorial.py +└── tp6_enirely + ├── tp6 │   ├── LSC.py - │   ├── Sommets.py + │   ├── npi.py + │   ├── Pile_List.py + │   ├── Pile_LSC.py + │   ├── Pile_Tuple.py + │   ├── README.md │   ├── test.py - │   ├── TP5_1.py - │   └── TP5.py - ├── TP 5 Listes Chaînées-20240925.zip - └── TP5_Listes_Chainees.pdf + │   └── TP_Piles.pdf + ├── TP6 + │   ├── LSC.py + │   ├── Pile_List.py + │   ├── Pile_LSC.py + │   ├── Pile_Tuple.py + │   ├── test_2.py + │   │   ├── modules.rst + │   │   ├── Pile_List.rst + │   │   ├── Pile_Tuple.rst + │   │   └── test.rst + │   ├── test.py + │   ├── test.py.patch + │   └── TP_Piles.pdf + ├── tp6_self + │   ├── LSC.py + │   ├── npi.py + │   ├── Pile_List.py + │   ├── Pile_LSC.py + │   ├── Pile_Tuple.py + │   ├── README.md + │   └── test.py + └── tp_listes_chaines + ├── execute.py + ├── fichiers + │   ├── Chartreuse.csv + │   ├── factorial.py + │   ├── LSC.py + │   ├── Sommets.py + │   ├── test.py + │   ├── TP5_1.py + │   └── TP5.py + ├── TP 5 Listes Chaînées-20240925.zip + └── TP5_Listes_Chainees.pdf -45 directories, 136 files +46 directories, 135 files diff --git a/tp_listes_chaines/fichiers/factorial.py b/file/new/fifo.py similarity index 100% rename from tp_listes_chaines/fichiers/factorial.py rename to file/new/fifo.py diff --git a/TP6/LSC.py b/file/old/LSC.py similarity index 100% rename from TP6/LSC.py rename to file/old/LSC.py diff --git a/file/file.py b/file/old/file.py similarity index 100% rename from file/file.py rename to file/old/file.py diff --git a/file/file_LSC.py b/file/old/file_LSC.py similarity index 100% rename from file/file_LSC.py rename to file/old/file_LSC.py diff --git a/file/file_tuple.py b/file/old/file_tuple.py similarity index 100% rename from file/file_tuple.py rename to file/old/file_tuple.py diff --git a/file/LSC.py b/tp6_enirely/TP6/LSC.py similarity index 100% rename from file/LSC.py rename to tp6_enirely/TP6/LSC.py diff --git a/TP6/Pile_LSC.py b/tp6_enirely/TP6/Pile_LSC.py similarity index 100% rename from TP6/Pile_LSC.py rename to tp6_enirely/TP6/Pile_LSC.py diff --git a/TP6/Pile_List.py b/tp6_enirely/TP6/Pile_List.py similarity index 100% rename from TP6/Pile_List.py rename to tp6_enirely/TP6/Pile_List.py diff --git a/TP6/Pile_Tuple.py b/tp6_enirely/TP6/Pile_Tuple.py similarity index 100% rename from TP6/Pile_Tuple.py rename to tp6_enirely/TP6/Pile_Tuple.py diff --git a/TP6/TP_Piles.pdf b/tp6_enirely/TP6/TP_Piles.pdf similarity index 100% rename from TP6/TP_Piles.pdf rename to tp6_enirely/TP6/TP_Piles.pdf diff --git a/TP6/test.py b/tp6_enirely/TP6/test.py similarity index 100% rename from TP6/test.py rename to tp6_enirely/TP6/test.py diff --git a/TP6/test.py.patch b/tp6_enirely/TP6/test.py.patch similarity index 100% rename from TP6/test.py.patch rename to tp6_enirely/TP6/test.py.patch diff --git a/TP6/test_2.py/Pile_List.rst b/tp6_enirely/TP6/test_2.py/Pile_List.rst similarity index 100% rename from TP6/test_2.py/Pile_List.rst rename to tp6_enirely/TP6/test_2.py/Pile_List.rst diff --git a/TP6/test_2.py/Pile_Tuple.rst b/tp6_enirely/TP6/test_2.py/Pile_Tuple.rst similarity index 100% rename from TP6/test_2.py/Pile_Tuple.rst rename to tp6_enirely/TP6/test_2.py/Pile_Tuple.rst diff --git a/TP6/test_2.py/modules.rst b/tp6_enirely/TP6/test_2.py/modules.rst similarity index 100% rename from TP6/test_2.py/modules.rst rename to tp6_enirely/TP6/test_2.py/modules.rst diff --git a/TP6/test_2.py/test.rst b/tp6_enirely/TP6/test_2.py/test.rst similarity index 100% rename from TP6/test_2.py/test.rst rename to tp6_enirely/TP6/test_2.py/test.rst diff --git a/tp6/LSC.py b/tp6_enirely/tp6/LSC.py similarity index 100% rename from tp6/LSC.py rename to tp6_enirely/tp6/LSC.py diff --git a/tp6/Pile_LSC.py b/tp6_enirely/tp6/Pile_LSC.py similarity index 100% rename from tp6/Pile_LSC.py rename to tp6_enirely/tp6/Pile_LSC.py diff --git a/tp6/Pile_List.py b/tp6_enirely/tp6/Pile_List.py similarity index 100% rename from tp6/Pile_List.py rename to tp6_enirely/tp6/Pile_List.py diff --git a/tp6/Pile_Tuple.py b/tp6_enirely/tp6/Pile_Tuple.py similarity index 100% rename from tp6/Pile_Tuple.py rename to tp6_enirely/tp6/Pile_Tuple.py diff --git a/tp6/README.md b/tp6_enirely/tp6/README.md similarity index 100% rename from tp6/README.md rename to tp6_enirely/tp6/README.md diff --git a/tp6/TP_Piles.pdf b/tp6_enirely/tp6/TP_Piles.pdf similarity index 100% rename from tp6/TP_Piles.pdf rename to tp6_enirely/tp6/TP_Piles.pdf diff --git a/tp6/npi.py b/tp6_enirely/tp6/npi.py similarity index 100% rename from tp6/npi.py rename to tp6_enirely/tp6/npi.py diff --git a/tp6/test.py b/tp6_enirely/tp6/test.py similarity index 100% rename from tp6/test.py rename to tp6_enirely/tp6/test.py diff --git a/tp6_self/LSC.py b/tp6_enirely/tp6_self/LSC.py similarity index 100% rename from tp6_self/LSC.py rename to tp6_enirely/tp6_self/LSC.py diff --git a/tp6_self/Pile_LSC.py b/tp6_enirely/tp6_self/Pile_LSC.py similarity index 100% rename from tp6_self/Pile_LSC.py rename to tp6_enirely/tp6_self/Pile_LSC.py diff --git a/tp6_self/Pile_List.py b/tp6_enirely/tp6_self/Pile_List.py similarity index 100% rename from tp6_self/Pile_List.py rename to tp6_enirely/tp6_self/Pile_List.py diff --git a/tp6_self/Pile_Tuple.py b/tp6_enirely/tp6_self/Pile_Tuple.py similarity index 100% rename from tp6_self/Pile_Tuple.py rename to tp6_enirely/tp6_self/Pile_Tuple.py diff --git a/tp6_self/README.md b/tp6_enirely/tp6_self/README.md similarity index 100% rename from tp6_self/README.md rename to tp6_enirely/tp6_self/README.md diff --git a/tp6_self/npi.py b/tp6_enirely/tp6_self/npi.py similarity index 100% rename from tp6_self/npi.py rename to tp6_enirely/tp6_self/npi.py diff --git a/tp6_self/test.py b/tp6_enirely/tp6_self/test.py similarity index 100% rename from tp6_self/test.py rename to tp6_enirely/tp6_self/test.py diff --git a/tp_listes_chaines/TP 5 Listes Chaînées-20240925.zip b/tp6_enirely/tp_listes_chaines/TP 5 Listes Chaînées-20240925.zip similarity index 100% rename from tp_listes_chaines/TP 5 Listes Chaînées-20240925.zip rename to tp6_enirely/tp_listes_chaines/TP 5 Listes Chaînées-20240925.zip diff --git a/tp_listes_chaines/TP5_Listes_Chainees.pdf b/tp6_enirely/tp_listes_chaines/TP5_Listes_Chainees.pdf similarity index 100% rename from tp_listes_chaines/TP5_Listes_Chainees.pdf rename to tp6_enirely/tp_listes_chaines/TP5_Listes_Chainees.pdf diff --git a/tp_listes_chaines/execute.py b/tp6_enirely/tp_listes_chaines/execute.py similarity index 100% rename from tp_listes_chaines/execute.py rename to tp6_enirely/tp_listes_chaines/execute.py diff --git a/tp_listes_chaines/fichiers/Chartreuse.csv b/tp6_enirely/tp_listes_chaines/fichiers/Chartreuse.csv similarity index 100% rename from tp_listes_chaines/fichiers/Chartreuse.csv rename to tp6_enirely/tp_listes_chaines/fichiers/Chartreuse.csv diff --git a/tp_listes_chaines/fichiers/LSC.py b/tp6_enirely/tp_listes_chaines/fichiers/LSC.py similarity index 100% rename from tp_listes_chaines/fichiers/LSC.py rename to tp6_enirely/tp_listes_chaines/fichiers/LSC.py diff --git a/tp_listes_chaines/fichiers/Sommets.py b/tp6_enirely/tp_listes_chaines/fichiers/Sommets.py similarity index 100% rename from tp_listes_chaines/fichiers/Sommets.py rename to tp6_enirely/tp_listes_chaines/fichiers/Sommets.py diff --git a/tp_listes_chaines/fichiers/TP5.py b/tp6_enirely/tp_listes_chaines/fichiers/TP5.py similarity index 100% rename from tp_listes_chaines/fichiers/TP5.py rename to tp6_enirely/tp_listes_chaines/fichiers/TP5.py diff --git a/tp_listes_chaines/fichiers/TP5_1.py b/tp6_enirely/tp_listes_chaines/fichiers/TP5_1.py similarity index 100% rename from tp_listes_chaines/fichiers/TP5_1.py rename to tp6_enirely/tp_listes_chaines/fichiers/TP5_1.py diff --git a/tp6_enirely/tp_listes_chaines/fichiers/factorial.py b/tp6_enirely/tp_listes_chaines/fichiers/factorial.py new file mode 100644 index 0000000..e69de29 diff --git a/tp_listes_chaines/fichiers/test.py b/tp6_enirely/tp_listes_chaines/fichiers/test.py similarity index 100% rename from tp_listes_chaines/fichiers/test.py rename to tp6_enirely/tp_listes_chaines/fichiers/test.py