Es gibt eine große Anzahl von dort Sortieralgorithmen, aber die meisten von ihnen nur völlig geordnete Mengen an arbeiten, weil sie davon ausgehen, dass zwei beliebige Elemente vergleichbar sind. Gibt es jedoch gute Algorithmen für das Sortieren von Posets, bei denen einige Elemente nicht vergleichbar sind? Das heißt, da eine Menge S von Elementen aus einer poset gezogen, was ist der beste Weg, eine Ordnung x , bis der Ausgang x , ..., x n so dass, wenn x i ≤ x j, i ≤ j?Sortieren einer Pose?
Antwort
Es gibt ein Papier mit dem Titel Sorting and Selection in Posets, das auf arxiv.org verfügbar ist. Es behandelt Sortiermethoden der Ordnung O ((w^2) nlog (n/w)), wobei w die "Breite" des Posets ist. Ich habe das Papier nicht gelesen, aber es scheint, als ob es deckt, was Sie suchen.
Danke für den Link! Das sieht sehr vielversprechend aus! – templatetypedef
Ich würde mit Auswahl-Austausch-Sortierung beginnen. Das ist O (n^2) und ich denke nicht, dass du es besser machst.
Topological sort ist gut geeignet, um eine teilweise geordnete Menge zu sortieren. Die meisten Algorithmen sind O (n^2). Hier ist ein Algorithmus aus Wikipedia:
L ← Empty list that will contain the sorted elements
S ← Set of all nodes with no incoming edges
while S is non-empty do
remove a node n from S
add n to tail of L
for each node m with an edge e from n to m do
remove edge e from the graph
if m has no other incoming edges then
insert m into S
if graph has edges then
return error (graph has at least one cycle)
else
return L (a topologically sorted order)
Es gibt eine helpful video example. Die meisten Unix-ähnlichen Systeme haben den tsort
Befehl. Sie könnten für das Video Brownie Beispiel mit tsort
lösen wie folgt:
$ cat brownies.txt
preheat bake
water mix
dry_ingredients mix
grease pour
mix pour
pour bake
$ tsort brownies.txt
grease
dry_ingredients
water
preheat
mix
pour
bake
- 1. Pose Driften in merkmalsloser Umgebung
- 2. Menschliche Pose Schätzung - effiziente Verknüpfung von Körperteilen
- 3. Android Facedetector Pose Werte sind immer 0
- 4. falsche Kamera Pose von zwei Sicht SFM
- 5. bester Algorithmus für Gesichtserkennung und Pose Schätzung
- 6. Sortieren einer Textdatei
- 7. SQLite - Sortieren einer Tabelle
- 8. Sortieren einer Guava BiMap
- 9. Sortieren einer Datentabelle
- 10. Sortieren einer namevaluecollection
- 11. Sortieren einer Composite-Sammlung
- 12. ggplot2: Sortieren einer Handlung
- 13. Sortieren einer ListBox in WPF
- 14. Sortieren einer Ganzzahlliste in Python
- 15. Liste nach einer anderen sortieren?
- 16. Sortieren einer IList in C#
- 17. Sortieren einer Tabelle mit R
- 18. Sortieren einer HashMap nach Datum
- 19. Sortieren einer ListView nach Spalte
- 20. Sortieren mit einer Liste Iterator
- 21. Sortieren einer gesamten SQLite-Tabelle
- 22. Sortieren einer Reihe von Werten
- 23. Sortieren einer ArrayCollection in Flex
- 24. Sortieren einer Sammlung von Objekten
- 25. Elemente in einer Datenbank sortieren
- 26. Sortieren nach einer benutzerdefinierten Reihenfolge
- 27. Sortieren einer Datenstruktur in Java
- 28. Sortieren einer Liste nach einer Immobilie java
- 29. Konvertieren von Tracker-Pose-Informationen in Spalte-große geordnete Matrix
- 30. ROS rViz spiegelt nicht meine ursprüngliche Pose wider
Ist das nicht nur topologische Sortierung? –
@ jleedev- Sie es nur mit einem topologischen Art tun könnten, wenn Sie jedes Paar von Elementen in S mit einer im Vergleich wussten, wie ein anderen a priori; Sonst müßten Sie O (| S |^2) Zeit damit verbringen, alle Vergleiche zu machen. – templatetypedef