Teil drei, in dem Athos ausfiel, und der Graf von la Fer sind mit Algorithmen klug.
UPD Teil Eins ist da
UPD Teil zwei hier
AntipovSN und MihhaCF
Einführung der Autoren:
Guten Tag! Heute setzen wir die Artikelserie fort, die sich mit dem Scoring und der Verwendung der Graphentheorie befasst . Den ersten und zweiten Artikel können Sie hier und hier kennenlernen . Wir empfehlen dringend, ansonsten scheint dieser Artikel ein bedeutungsloses Experiment mit Algorithmen zu sein.
Alle Comic-Allegorien, Beilagen usw. sollen die Erzählung leicht entlasten und nicht in einen langweiligen Vortrag fallen lassen. Wir entschuldigen uns bei allen, die nicht auf unseren Humor eingehen
Der Zweck dieses Artikels: In nicht mehr als 30 Minuten den Algorithmus für die Diagrammkonstruktion zu beschreiben und die Bewertungspunktzahl für NPO „One for All“ zu berechnen.
Begriffe und Definitionen:
- DFS-Algorithmus (Depth-First Search) - Die Tiefensuchstrategie besteht, wie der Name schon sagt, darin, so weit wie möglich „tiefer“ in das Diagramm einzudringen. Der Suchalgorithmus wird rekursiv beschrieben: Wir sortieren alle Kanten, die vom betreffenden Scheitelpunkt stammen. Wenn die Kante zu einem Scheitelpunkt führt, der zuvor nicht berücksichtigt wurde, führen wir den Algorithmus von diesem nicht untersuchten Scheitelpunkt aus. Danach kehren wir zurück und sortieren die Kanten weiter. Die Rückgabe erfolgt, wenn im betrachteten Scheitelpunkt keine Kanten vorhanden sind, die zum nicht untersuchten Scheitelpunkt führen. Wenn nach Abschluss des Algorithmus nicht alle Scheitelpunkte berücksichtigt wurden, muss der Algorithmus von einem der nicht untersuchten Scheitelpunkte aus ausgeführt werden
- Rekursion - Aufrufen einer Funktion (Prozedur) von ihr selbst, direkt (einfache Rekursion) oder über andere Funktionen (komplexe oder indirekte Rekursion)
In unserem ersten Artikel ( hier ) haben wir das Graphmodell bestimmt , mit dem wir experimentieren werden, und es kurz beschrieben.
In unserem zweiten Artikel ( hier ) haben wir die grundlegenden Datenstrukturen beschrieben, die zum Speichern eines Diagramms verwendet werden können, und das Diagrammmodell und die Arbeitsweise damit detaillierter beschrieben.
Es ist Zeit, das Schwert aus der Scheide zu ziehen und alle zu erstechen, genauer gesagt, einen Algorithmus zur Berechnung der Punktzahl für NPO „One for All“ zu erstellen.
Lass uns gehen!
Der Algorithmus wird in Python ausgeführt . Wie sie sagen, zieh die Schlange am Schwert!
Das Diagramm wird wie folgt im Wörterbuch gespeichert:
graph = { 'Odin_za_vseh' : {'goody': 10, 'rank': 4, 'fund':4, 'relations':{'Bonasye':3, 'Trevi': 1, 'Gusak':2,'Suchka':5, 'Roshfor':1, 'Cardi':1}}, 'Cardi' : {'goody': -8, 'rank': 9, 'fund':8, 'relations':{'Korol':2,'Odin_za_vseh':3,'Gvardia':5, 'Roshfor':5 }}, 'Roshfor' : {'goody': -7, 'rank': 7, 'fund':5,'relations':{'Cardi':1, 'Suchka': 3,'Odin_za_vseh':2, 'Bonasye':5 }}, 'Suchka' : {'goody': -10, 'rank': 4, 'fund':4, 'relations':{'Odin_za_vseh':5,'Roshfor':3 }}, 'Gvardia' : {'goody': -5, 'rank': 3, 'fund':4, 'relations':{'Cardi':1,'Gusak':1 }}, 'Gusak' : {'goody': -7, 'rank': 4, 'fund':4, 'relations':{'Gvardia':5,'Odin_za_vseh':2 }}, 'Trevi' : {'goody': 7, 'rank': 5, 'fund':5, 'relations':{'Odin_za_vseh':4,'Mushketery':5 }}, 'Bonasye': {'goody': -2, 'rank': 2, 'fund':3, 'relations':{'Odin_za_vseh':1,'Roshfor':1,'Konsta':2 }}, 'Konsta' : {'goody': 10, 'rank': 5, 'fund':3, 'relations':{'Koroleva':2,'Bonasye':1 }}, 'Mushketery' : {'goody': 7, 'rank': 5, 'fund':4, 'relations':{'Korol':1, 'Trevi':1}}, 'Koroleva' : {'goody': 6, 'rank': 8, 'fund':7, 'relations':{'Korol':2,'Konsta':5, 'EnglishMan':3 }}, 'Korol' : {'goody': 5, 'rank': 10, 'fund':10, 'relations':{'Cardi':3, 'Koroleva':5,'Mushketery':5 }}, 'EnglishMan' : {'goody': 5, 'rank': 8, 'fund':10, 'relations':{'Koroleva':2}} }
'goody' - Knotenbewertung - gut oder schlecht und der Grad der "Priorität" des Knotens. Zum Beispiel ist der Kardinal ein negativer Held des Films, daher ist seine Bewertung negativ. Der Kardinal ist einer der Hauptfeinde unserer Helden, aber nicht der wichtigste (wir haben es beschlossen)
'Rang' - Punktzahl des Knotens in der Rangliste
'Fonds' - Knotenlebensfähigkeit
'Beziehungen' - mit wem ist verbunden und wie stark kann der damit verbundene Knoten beeinflusst werden
Bisher ist alles einfach, aber ein aufmerksamer Leser könnte bereits einige der Funktionen bemerken, ja, es treten bereits inhaltliche Fragen auf. Versuchen wir, sie vorherzusagen und zu beantworten. Das Recht der ersten Injektion liegt bei uns!
Ich denke, es lohnt sich nicht zu erklären, was wir für den Namen des Schlüssels des Wörterbuchs der ersten Ebene verwendet haben. Sie haben jedoch bereits vollkommen erraten, dass einige Namen aufgrund unserer Wahrnehmung der Arbeit Änderungen erfahren haben.
Woher kommen diese Parameter ('goody', 'rank' usw.), warum sind sie und woher kommt ihre Bewertung?
In der Reihenfolge:
- Im wirklichen Leben charakterisieren diese Parameter eine bestimmte Knotenfirma. Für jeden, der die Bewertung durchführt, und je nach Art dieser Bewertung sind diese Parameter unterschiedlich. Zum Beispiel können solche Parameter zur Bewertung der Bewertung eines Kreditnehmers sein - Umsatz, Höhe der Verbindlichkeiten / Forderungen, Vollstreckungsbescheid usw.
- Warum genau sie - der Autor sieht das so))) Diese Parameter spiegeln unserer Meinung nach das Wesentliche dessen wider, was der Graf beschreibt
- Die Bewertung ist, wie sie jetzt sagen, ein Experte. Im wirklichen Leben wird diese Schätzung durch Bergbau erhalten. Wir werden im nächsten Artikel mehr darüber schreiben.
Warum haben einige Knoten unterschiedliche wechselseitige Verknüpfungen (z. B. Odin_za_vseh - Bonasye = 3 und Bonasye - Odin_za_vseh = 1)? Dies liegt daran, dass Odin_za_vseh eine viel größere Wirkung auf Bonasye hat als umgekehrt. Und das ist wichtig zu verstehen. Bei der Bewertung von Odin_za_vseh müssen wir die Wirkung von Bonasye auf Odin_za_vseh berücksichtigen.
Was ist ein Bond Score und wie wird er berechnet?
- Die Kommunikationsbewertung ist ein Maß für den Einfluss eines Knotens auf einen anderen
- Jede Verbindung in unserem Diagramm ist bidirektional, aber gleichzeitig kann die Bewertung der Kommunikation in verschiedene Richtungen variieren
- Die Kommunikationsbewertung ist ein Wert von 1 bis 5 (nur zum Beispiel von 1 bis 5). Es kann keine negative Verbindung geben, weil Der Knoten ist entweder mit einem anderen verbunden, und wir bewerten, wie stark er diesen Knoten betrifft, oder er ist nicht verbunden. In diesem Fall ist die Verbindung mit einem unzuverlässigen Knoten natürlich letztendlich negativ für den Knoten, den wir bewerten, weil Dieser unzuverlässige Knoten hat eine negative interne Bewertung.
- Eine interne Bewertung eines Knotens ist ein aggregierter Wert, der aus den internen Parametern eines Knotens besteht. In unserem Beispiel ist dies "goody", "rank", "fund". Internes Rating kann negativ sein.
Wie wird ein Torball betrachtet?
- Jedes Unternehmen, das diesen Ansatz verwendet, kann seine Scoring-Score-Berechnung basierend auf seinen Anforderungen und seiner Geschäftserfahrung festlegen.
- In unserem Fall haben wir einen einfachen und komplizierten Weg gewählt:
- Bewertungspunktzahl = Interne Bewertung des Knotens, den wir bewerten + Summe (Interne Bewertung eines untergeordneten Knotens der Ebene 1 zur Bewertung der Auswirkung dieses Knotens auf den zu bewertenden Knoten) + (Summe (interne Bewertung eines untergeordneten Knotens der Ebene 2 zur Bewertung der Auswirkung dieses Knotens auf einen übergeordneten Knoten der Ebene 1) / 2)
- Wenn Sie eine negative Punktzahl erhalten, vergeben wir kein Darlehen
- Der unten dargestellte Algorithmus ist grundlegend und kann leicht an jede Berechnungsmethode für die Bewertungspunktzahl angepasst werden.
- Alle Schwierigkeiten werden im „richtigen“ Bergbau liegen, aber es wird im nächsten Artikel beschrieben
Und hier ist der Algorithmus selbst:
searched=[]
Zusammenfassend:
- Ich bin sicher, dass das Lesen des Artikels nicht länger als 30 Minuten gedauert hat
- Wir haben die Punktzahl für NPO One for All berechnet. Wir geben keine Anerkennung, NPO "One for All" stellte sich als Abenteurer mit einer Reihe von Feinden heraus. Wir können Staatsangestellten Anerkennung zollen, zum Beispiel "Mushketery".
- Der Algorithmus erwies sich als einfach und sehr effektiv.
- Die Rechenkomplexität ist O (N ** d + 1), wobei d die Anzahl der Ebenen ist. Visuell ist der Algorithmus in der folgenden Abbildung dargestellt.

Danke an sobolevn und seinen Artikel
Sie können mit dem interessantesten und schwierigsten fortfahren - Data Mining!
PS In Bezug auf Links zu anderen Artikeln mit Theorie (in einem früheren Artikel haben wir eine Bemerkung gemacht):