Implémenter l'algorithme de Dijkstra en python

Ce que j'ai fait

J'ai également essayé d'implémenter la méthode Dyxtra avec python pour étudier la méthode Dyxtra. A titre d'exemple, j'ai utilisé "D-Treasure Hunt of AtCoder Beginner Contest 035" qui est apparu pour la première fois dans "Dijkstra AtCoder".

Différence entre la méthode Dyxtra et DFS ou BFS

Je ne comprends pas la différence entre la méthode Dyxtra et DFS et BFS, je vais donc résumer brièvement les résultats de mon enquête. (DFS et BFS sont implémentés ci-dessous) Implémentez la recherche de priorité de profondeur (DFS) et la recherche de priorité de largeur (BFS) en python

--DFS (recherche de priorité de profondeur) / BFS (recherche de priorité de largeur)

Dijkstra's Algorithm

Note

start → Le chemin le plus court pour atteindre la destination est g_list, go Gérez l'itinéraire le plus court depuis la destination pour commencer avec b_list, back

#ABC035 D Chasse au trésor

import heapq

def dijkstra(s, n, c_list):
    _list = [float("Inf")]*n
    _list[s] = 0
    hq = [[0,s]]
    heapq.heapify(hq)
    while len(hq) > 0:
        _ci, _i = heapq.heappop(hq)
        if _list[_i] < _ci:
            continue
        for _cj,_j in c_list[_i]:
            if _list[_j] > (_list[_i] + _cj):
                _list[_j] = _list[_i] + _cj
                heapq.heappush(hq, [_list[_j],_j])
    return _list
                
n, m, t = map(int, input().split())
a_list = [int(x) for x in input().split()]
g_list = [[] for i in range(n)]
b_list = [[] for i in range(n)]

for i in range(m):
    _a, _b, _c = map(int, input().split())
    g_list[_a-1].append([_c,_b-1])
    b_list[_b-1].append([_c,_a-1])

go = dijkstra(0, n, g_list)
back = dijkstra(0, n, b_list)
ans = 0

for i in range(n):
    _tmp = t - (go[i] + back[i])
    if a_list[i]*_tmp > ans:
        ans = a_list[i]*_tmp

print(ans)

Recommended Posts

Implémenter l'algorithme de Dijkstra en python
Algorithme en Python (Dijkstra)
Livre Ali en python: méthode Dyxtra Sec.2-5
Algorithme génétique en python
Mettre en œuvre des recommandations en Python
Implémenter XENO avec python
Algorithme en Python (méthode Bellman-Ford, Bellman-Ford)
Implémenter sum en Python
Implémenter Traceroute dans Python 3
Implémenter l'algorithme PRML en Python (presque uniquement Numpy)
Algorithme en Python (jugement premier)
Implémenter Naive Bayes dans Python 3.3
Implémenter d'anciens chiffrements en python
Reproduire la méthode de division mutuelle euclidienne en Python
Algorithme en Python (dichotomie)
[Python3] Méthode Dikstra avec 14 lignes
Implémenter Redis Mutex en Python
Implémenter l'extension en Python
Mettre en œuvre un RPC rapide en Python
Implémenter le bot de discussion Slack en Python
Algorithme Python
Mettre en œuvre l'apprentissage de l'empilement en Python [Kaggle]
Algorithme en Python (recherche de priorité de largeur, bfs)
Algorithme de tri et implémentation en Python
Ecrire des algorithmes A * (A-star) en Python
Implémenter le modèle Singleton en Python
Algorithme en Python (recherche de priorité en profondeur, dfs)
Implémentation d'un algorithme simple en Python 2
Implémentez rapidement l'API REST en Python
Implémentation de la méthode Dyxtra par python
Algorithme (arborescence de segments) en Python (s'entraîner)
Exécutez un algorithme simple en Python
Quadtree en Python --2
Python en optimisation
CURL en Python
J'ai essayé d'implémenter PLSA en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Implémenter __eq__ etc. de manière générique dans la classe Python
J'ai essayé d'implémenter la permutation en Python
Méta-analyse en Python
Mémorandum Python (algorithme)
Unittest en Python
Algorithme en Python (ABC 146 C Dichotomy
Mettre en œuvre collectivement des tests d'hypothèses statistiques en Python
J'ai essayé d'implémenter PLSA dans Python 2
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
Plink en Python
J'ai essayé d'implémenter ADALINE en Python
Constante en Python
Ecrire une méthode de cupidité simple en Python
J'ai essayé d'implémenter PPO en Python