Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] Wie programmiere ich einen performanten Bruteforce-Algorithmus?
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 21
Herkunft: Österreich

Themenstarter:

[erledigt] Wie programmiere ich einen performanten Bruteforce-Algorithmus?

beantworten | zitieren | melden

Hallo liebe Community,

Ich habe bereits einen eher schlechten Brute Force Algorithmus programmiert, der ein Array so lange "mischt", bis es sortiert ist. Jedoch möchte ich jetzt einen guten Brute Force Sortieralgorithmus schreiben, welcher nicht zufällig mischt, sondern nacheinander alle Möglichkeiten, die es gibt probiert.
Ich habe es bereits mit vielen Ansätzen probiert, jedoch nicht geschafft. Auch im Internet bin ich leider nicht fündig geworden.

Ich hoffe, dass mir jemand weiterhelfen kann!
LG Jonas ;)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Jonas007 am .
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1767
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Was ist den dein Ziel?
Sortierung generell gibt es zu Hauf Lösungen im Netz.
Was soll der Zweck eines Brute Force Sortierung sein?
Der Sinn einer Sortierung ist ja, dass man eine bestimmte Reihenfolge haben will.
Wenn du mit Permutation arbeiten willst, dann ergibt das Ziel der Sortierung keinen großen Sinn.
Aber ggf. fehlt uns der Kontext, den du hie nicht erwähnst.

Ansonsten gibt es für nomale Sortierungen genug Lösungen + fertige Lösungen in Array.Sort

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 21
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

Mein Ziel ist es Algorithmen besser zu verstehen und einfach etwas zu üben. Ich dachte mir ein Brute Force Algorithmus, sprich einfach alle Lösungen auszuprobieren, sollte einfach sein jedoch schaffe ich es nicht. Ich habe bereits viel effizienter Sortier Algorithmen gesehen, verstanden und selbst programmiert jedoch ist es bedauernd, dass ich so einen scheinbar einfachen Algorithmus nicht schaffe.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3946

beantworten | zitieren | melden

Dein Algorithmus nennt sich Bogosort (und ist eher als Spaß zu verstehen).
Hast du denn schon den Bubblesort mal programmiert (denn diesen kann man, gerade in der einfachen Form, als Sortieren über alle Möglichkeiten bezeichnen)?
private Nachricht | Beiträge des Benutzers
JimStark
myCSharp.de - Member

Avatar #dOpLzh7hN1az1g0eGRc0.jpg


Dabei seit:
Beiträge: 210

beantworten | zitieren | melden

Zitat von Jonas007
Jedoch möchte ich jetzt einen guten Brute Force Sortieralgorithmus schreiben, welcher nicht zufällig mischt, sondern nacheinander alle Möglichkeiten, die es gibt probiert.

Das kannst du mit ein paar Schleifen selber zusammen bauen oder vielleicht hilft das: Enumerable.Zip Methode
private Nachricht | Beiträge des Benutzers
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 21
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

Im Prinzip kann man mein Problem ziemlich vereinfachen: Ich suche eine Methode, welche alle Möglichkeiten einer Liste angibt:


public static int[,] Combinations(int[] arr)
{
    // Algorithmus
}

Die Augabe sollte dann ein 2D Array (Tabelle) sein, wo nacheinander alle Möglichkeiten der List aufgelistet werden.
Im Grunde genau das, was diese Website, die ich gerade gefunden habe erledigt: https://www.zum.de/Faecher/Materialien/gebhardt/stochastik/Kombin.html

Bsp:


int[] arr = new int[3] {1, 2, 3}
int[,] arr2D = Combinations;

// Ausgabe beim Durchlaufen des arr2D:
// 123
//132
//213
//231
//312
//321


Ich hoffe ihr versteht was ich versuche. Und bereits vielen Dank für die zahlreichen Antworten
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3946

beantworten | zitieren | melden

Dann s. z.B. Anzahl und Berechnung möglicher Kombinationen und Permutationen [inkl. Code-Snippets].
private Nachricht | Beiträge des Benutzers
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 21
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

Danke dir. Ich bin in diesem Beitrag auf den Johnson Trotter Algorithmus gestoßen, der mein Problem löst. Mit Hilfe dieses Grundalgorithmuses kann ich meine Idee umsetzen.
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5959
Herkunft: Leipzig

beantworten | zitieren | melden

Ich verstehe nicht, was das mit Sortierung zu tun haben soll. Sortieren bedeutet ja, die Werte in der Liste in eine bestimmte Reihenfolge zu bringen. Eine Permutation ist doch das genaue Gegenteil.

PS: "ein performanter Bruteforce-Algorithmus" ist eine Tautologie ein Widerspruch*, ich hoffe, das ist dir klar :)

*Danke @witte
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 958

beantworten | zitieren | melden

Du meinst Paradoxon und nicht Tautologie oder?
private Nachricht | Beiträge des Benutzers