Implementieren Sie den Dijkstra-Algorithmus in Python

Was ich getan habe

Ich habe auch versucht, die Dyxtra-Methode mit Python zu implementieren, um die Dyxtra-Methode zu studieren. Als Beispiel habe ich "D-Schatzsuche des AtCoder-Anfängerwettbewerbs 035" verwendet, der zuerst in "Dijkstra AtCoder" erschien.

Unterschied zwischen Dyxtra-Methode und DFS oder BFS

Ich verstehe den Unterschied zwischen der Dyxtra-Methode und DFS und BFS nicht, daher werde ich die Ergebnisse meiner Untersuchung kurz zusammenfassen. (DFS und BFS werden unten implementiert) Implementieren Sie die Suche nach Tiefenpriorität (DFS) und Suche nach Breitenpriorität (BFS) mit Python

--DFS (Tiefenprioritätssuche) / BFS (Breitenprioritätssuche)

Dijkstra's Algorithm

Memo

start → Der kürzeste Weg zum Ziel ist g_list, go Verwalten Sie die kürzeste Route vom Ziel bis zum Start mit "b_list, back"

#ABC035 D Schatzsuche

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

Implementieren Sie den Dijkstra-Algorithmus in Python
Algorithmus in Python (Dijkstra)
Ali Buch in Python: Sec.2-5 Dyxtra-Methode
Genetischer Algorithmus in Python
Implementieren Sie XENO mit Python
Algorithmus in Python (Bellman-Ford-Methode, Bellman-Ford)
Implementieren Sie sum in Python
Implementieren Sie Traceroute in Python 3
Implementieren Sie den PRML-Algorithmus in Python (fast nur Numpy)
Algorithmus in Python (Haupturteil)
Implementieren Sie Naive Bayes in Python 3.3
Implementieren Sie alte Chiffren in Python
Reproduzieren Sie die euklidische Methode der gegenseitigen Teilung in Python
Algorithmus in Python (Dichotomie)
[Python3] Dikstra-Methode mit 14 Zeilen
Implementieren Sie Redis Mutex in Python
Implementieren Sie die Erweiterung in Python
Implementieren Sie schnelles RPC in Python
Implementieren Sie den Slack Chat Bot in Python
Python-Algorithmus
Implementieren Sie das Stacking-Lernen in Python [Kaggle]
Algorithmus in Python (Breitenprioritätssuche, bfs)
Sortieralgorithmus und Implementierung in Python
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Implementieren Sie das Singleton-Muster in Python
Algorithmus in Python (Tiefenprioritätssuche, dfs)
Implementierung eines einfachen Algorithmus in Python 2
Implementieren Sie die REST-API schnell in Python
Implementierung der Dyxtra-Methode durch Python
Algorithmus (Segmentbaum) in Python (Übung)
Führen Sie einen einfachen Algorithmus in Python aus
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Ich habe versucht, PLSA in Python zu implementieren
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Implementieren Sie __eq__ usw. generisch in der Python-Klasse
Ich habe versucht, Permutation in Python zu implementieren
Metaanalyse in Python
Python-Memorandum (Algorithmus)
Unittest in Python
Algorithmus in Python (ABC 146 C Dichotomie
Implementieren Sie gemeinsam statistische Hypothesentests in Python
Ich habe versucht, PLSA in Python 2 zu implementieren
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
Plink in Python
Ich habe versucht, ADALINE in Python zu implementieren
Konstante in Python
Schreiben Sie eine einfache Giermethode in Python
Ich habe versucht, PPO in Python zu implementieren