nemocode Δημοσ. 29 Μαρτίου 2023 Δημοσ. 29 Μαρτίου 2023 Ο αλγόριθμος Bellman-Ford εφαρμόζεται παρακάτω για να προσδιοριστεί εάν υπάρχει ή όχι αρνητικός κύκλος στο δίκτυο. def negative_cycle(n, graph): # dist = [float('inf')] * (n+1) (This code fails) dist = [1001] * (n+1) # (this code doesn't) dist[1] = 0 for i in range(n): for st, end, cost in graph: print(dist) if dist[end] > dist[st] + cost: dist[end] = dist[st] + cost if i == n - 1: return 1 return 0 if __name__ == '__main__': n_vertices, n_edges = map(int, input().split()) edges = [] for i in range(n_edges): a, b, w = map(int, input().split()) edges.append((a, b, w)) print(negative_cycle(n_vertices, edges)) Αυτό το έγγραφο με δίδαξε ότι ο αλγόριθμος δεν χρειάζεται να έχει την έννοια του "Δεν έχω ξαναβρεθεί εδώ", κάτι που θα έκανε συναρπαστική την προετοιμασία με float('inf') σε άλλους αλγόριθμους. Προφανώς δεν καταλαβαίνω τι σημαίνει. Επίσης, αν και δεν έχω πρόσβαση στις δοκιμαστικές περιπτώσεις, υπάρχει μια ακραία περίπτωση που προκαλεί την αποτυχία του κώδικα όταν ο πίνακας dist αρχικοποιείται με float('inf'). Γιατί;
flienky Δημοσ. 29 Μαρτίου 2023 Δημοσ. 29 Μαρτίου 2023 (επεξεργασμένο) με μια πρώτη ματιά, το λάθος ειναι εκει που κανεις dist[end] > dist[st] + cost στην python δεν ισχυει οτι float("inf") < float("inf") + 1 δηλαδη, δεν μπορεις να συγκρίνεις δύο αριθμούς που ειναι και οι 2 άπειροι.. Ούτε στα μαθηματικα ούτε στην python Επεξ/σία 29 Μαρτίου 2023 από flienky
The_Mentor Δημοσ. 31 Μαρτίου 2023 Δημοσ. 31 Μαρτίου 2023 Θυμάμαι έναν καθηγητή μου στο πανεπιστήμιο, πριν πολλά χρόνια, να αναλύει την Θεωρία των Αριθμών και να λέει πως "άπειρες πινέζες καταλαμβάνουν λιγότερο χώρο από άπειρους ελέφαντες". Στη βάση αυτής της θεωρίας νομίζω πως μαθηματικά η έκφραση (float("inf") < float("inf") + 1) είναι σωστή. Τώρα, τι γνώριζαν από Θεωρία των Αριθμών οι developers όταν ανάπτυξαν την Numpy και την math library της Python, είναι άλλη ιστορία.
Επισκέπτης Δημοσ. 31 Μαρτίου 2023 Δημοσ. 31 Μαρτίου 2023 4 ώρες πριν, The_Mentor είπε "άπειρες πινέζες καταλαμβάνουν λιγότερο χώρο από άπειρους ελέφαντες" ενδιαφέρον, δεν μένει παρά να το αποδείξει
The_Mentor Δημοσ. 1 Απριλίου 2023 Δημοσ. 1 Απριλίου 2023 Έχει είδη αποδειχτεί. Ο πατέρας της θεωρίας Συνόλων (Set Theory), Georg Kantor απέδειξε το 1870 πως "some infinities are larger than other infinities".
Επισκέπτης Δημοσ. 1 Απριλίου 2023 Δημοσ. 1 Απριλίου 2023 Ο Καντορ είπε ακριβώς το αντίθετο από αυτό που προσπαθείσε ο καθηγητής να εκφράσει, το ίδιο θέμα έχει απασχολήσει τον μαθηματικό κόσμο πολλές φορές και σε πολλές μορφές όπως "το μπιζέλι και ο ήλιος" Banach-Tarski. Επίσης το inf +1 είναι λογικό βασικό λάθος ότι και να προσθέσεις στο άπειρο παραμένει απειρο δεν γίνεται άπειρο συν κάτι. Φιλικά Αντώνης.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα