Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1628to1632
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Algoithmus; Kombinatorik; ohne Zurücklegen?

Algoithmus; Kombinatorik; ohne Zurücklegen?
12.06.2018 11:50:13
Susi
Gesucht: VBA Algorithmus
Folgendes Problem:
Obst tauschen, aber es gibt bestimmte Regeln, welches Obst mit welchem getauscht werden darf.
Dieses Obst ist vorhanden und es gibt jeweils nur ein Stück davon:
Apfel
Banane
Mango
Kiwi
Avocado
Erdbeere
Kirsche
Erlaubte Täusche:
Apfel – Banane (Tausch geht auch jeweils anders rum: Banane – Apfel)
Apfel – Kiwi
Apfel – Kirsche
Banane – Apfel
Banane – Kiwi
Banane – Erdbeere
Mango – Kiwi
Mango – Avocado
…
Ich darf aber jedes Obst nur einmal getauscht haben. Das bedeutet, wenn ich den ersten Tausch Apfel – Banane durchgeführt habe, kann ich keinen Tausch mehr mit dem Apfel und keinen Tausch mehr mit der Banane durchführen.
Rahmbedingungen:
- Jedes Stück Obst darf nur einmal getauscht werden
- Die Regeln für die Täusche können sich ändern, sowie die Anzahl an Obstsorten. dynamisch!
Ziel: Alle möglichen Kombinationen von Obsttäuschen auflisten:
Kombination 1:
Apfel – Banane
Mango – Kiwi
…
Kombination 2:
Apfel – Kiwi
Banane – Erdbeere
Mango – Avocado
…
Kombination 3:
...
Kombination n:
…
Für mich ist das eine Art Kombinatorik bzw. Ziehen ohne Zurücklegen? Rekursion, … Türme von Hanoi ?
Ich bin VBA Excel Anfängerin und suche nach einem Algorithmus dafür. Sollte ich das mit mehreren Schleifen berechnen, wird die Laufzeit sicher ein Problem werden. Ich suche nach einer eleganteren und schnelleren Lösung, die mir sicher alle Kombinationen anzeigt.
Für Tipps, Algorithmen oder Suchideen bin ich dankbar!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das wird schwierig, da interdependent - owT
12.06.2018 12:03:44
lupo1
AW: Algoithmus; Kombinatorik; ohne Zurücklegen?
12.06.2018 15:53:49
mmat
Hallo Susi,
mir ist noch nicht klar, was du eigentlich möchtest:
a) einen Algorythmus
b) die Umsetzung desselben in VBA
c) beides?
Was bedeutet tauschen? Die Objekte tauschen ihren Platz in der Liste? Da sie danach nicht mehr verwendet werden dürfen, könnte man auch von einem paarweise Entnehmen gültiger Paarungen reden.
Du hast die Birnen vergessen.
AW: Algoithmus; Kombinatorik; ohne Zurücklegen?
13.06.2018 08:12:59
Susi
Hallo mmat
b) Ich suche eigentlich nach einer Umsetzung in VBA, die aber - wie ich vermute - sehr umständlich werden könnte, wenn ich diese mit mehreren Schleifen programmieren würde (zumindest, wenn ich das mit meinen Kenntnissen probiere). Daher...
a) ...suche ich auch nach einer Art Algorithmus, um das Problem einfacher abzubilden (wenn es so etwas gibt). Diesen würde ich dann probieren in VBA umzusetzen.
c) Also beides.
Tauschen ist hier für den Algorithmus eigentlich unwichtig. Ich muss das Obst nicht in einer Liste oder ähnliches tauschen. Es geht lediglich um die Information, dass der Tausch Apfel-Banane bereits durchgeführt wurde und daher kein anderer Tausch mehr mit Apfel oder Banane durchgeführt werden kann. Das heisst, dass jedem einzelnen möglichen Tausch auch ein Namen oder eine Zahl zugeordnet werden könnte und damit alle möglichen Kombinationen berechnet werden können. Allerdings darf die Information, welches Obst in diesem "Tausch" bzw. hinter dem Namen steht, nicht verloren gehen, da dies ja einen Einfluss auf die weiteren Optionen/möglichen Kombinationen hat. Die Beschreibung "paarweises Entnehmen gültiger Paarungen" trifft es von dir sehr gut.
d) Heute gibt es sogar Birne - Kirsche. ;-)
Anzeige
AW: Algoithmus; Kombinatorik; ohne Zurücklegen?
13.06.2018 10:04:29
mmat
Hallo Susi,
naja, der Auftrag ist schon etwas umfangreicher und um mehrere Schleifen wirst du (unabhängig von der Programmiersprache) nicht drumrumkommen.
Mir will zu dem Problem einfach nix bessers einfallen als folgendes
1. die Anzahl der erlaubten Kombinationen ist die kritische Größe für den Rechenaufwand. n Paare sind n! unterschiedliche Reihenfolgen. Je nach dem in welcher Reihenfolge ich die Paarungen abarbeite kann ja ein anderes Kompott rauskommen. Es bleibt einem also nix anderes übrig als jede erdenklich Reihenfolge abzuarbeiten (brute force), also wird im ersten Schritt erstmal eine Liste der Reihenfolgen erstellt.
2. Im zweiten Schritt werden dann die möglichen Reihenfolgen abgearbeitet und eine Ergebnisliste erstellt. Ich nehme mal an, dass bei der Ergebnisliste die Reihenfolge keine Rolle spielt. ("Paar 1 + Paar 2 ist das gleiche wie "Paar 2 + Paar 1").
3. Identische Ergebnisse werden eliminert.
4. Ausgabe der verbliebenen Paarlisten.
Wie wärs mit einem Beispiel für die erlaubten Paare?
Anzeige
AW: Algoithmus; Kombinatorik; ohne Zurücklegen?
14.06.2018 09:24:17
Susi
Hallo mmat
1.Meinst du, dass im ersten Schritt wirklich alle überhaupt möglichen Kombinationen an Paaren gesucht werden (unter Beachtung der Reihenfolge der Paare) und im Anschluss erst geprüft wird, welche Paarungen davon innerhalb einer Kombination nicht mehr erlaubt sind, da ein bestimmtes Obst schon vorher in der Liste auftaucht?
2.Oder findet dieser Schritt quasi bei der Abarbeitung der möglichen Reihenfolgen statt? Bei der Ergebnisliste spielt die Reihenfolge der einzelnen Paarungen keine Rolle und „Paar 1 + Paar 2“ ist dasselbe wie „Paar2 + Paar 1“
3.Ja, genau.
4.Und ja, genau.
Ich bin mir da trotzdem noch unsicher, wie und ob ich das in VBA abdecken kann. Gibt es für das Finden aller möglichen Kombinationen (ohne die Regel zu beachten, dass jedes Obst nur einmal getauscht/benutzt werden kann) eine VBA-Lösung/Ansatz?
Ich befürchte nur, wenn an einem Tag jede Art Obst der Welt benutzt werden kann, dass die Anzahl der Kombinationen recht hoch ausfallen dürfte !? Ohje…
Eine Überlegung von mir war, ob man das Problem mit einer Matrix abbilden kann. Spalten und Zeilen sind die Obstsorten. Da ich einen Apfel nicht gegen einen Apfel tauschen kann und Apfel – Banane dasselbe ist wie Banane – Apfel, brauche ich nur die untere Hälfte der Matrix (also unterhalb der Diagonalen)… Die Spalten und Zeilen werden jeweils gesperrt, wenn ein Obst benutzt wurde. Allerdings löst das nicht mein Problem der unterschiedlichen Kombinationen.
Mit dem Beispiel für die erlaubten Paare meinst du die Apfel – Banane, Banane – Kiwi, etc. Informationen? Also quasi als vollständiges Beispiel?
Vielen Dank schon für dein Input!
Anzeige
AW: Algoithmus; Kombinatorik; ohne Zurücklegen?
14.06.2018 10:34:06
mmat
Hallo Susi,
zu 1: Ja, der Unterschied, ist in welcher Reihenfolge die erlaubten Paare abgearbeitet werden. Alle möglichen Reihenfolgen müssen abgearbeitet werden ... n!
weil
1. Apfel-Birne
2. Apfel-Banane
3. Banane-Kirsche
gibt ein unterschiedliches Ergebnis. Wenn ich mit 2 beginne, sind keine Kirschen drin. Beginne ich mit 1 oder 3, kann ich den Korb leeren, die Paarung 2. kommt nicht zum Zug (Oder ich hab die Aufgabe doch nicht richtich kapiert).
Ja ein Beispiel wäre nicht schlecht, einen kompletten Korb mit Früchten und die erlaubten Paarungen (Bitte nicht mehr wie 8 Paare).
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige