Wieviele Möglichkeiten gibt es bei diesem Verfahren, brauche ne Formel dafür



  • Entweder stehe ich auf dem schlauch oder ich bin zu doof, jedenfalls
    komme ich nicht darauf, wie ich das in eine einfache Formel packen kann.

    Mein Verfahren ist folgendes:

    1. Ich habe einen endlichen String, z.b:
    abcde

    2. Und nun möchte ich die Anzahl der maximalen Kombinationsmöglichkeiten für diesen String haben, wenn folgendes zutrifft:

    A) Die Reihenfolge der Zeichen wird niemals verändert.
    😎 Der String wird für jede weitere Kombination hinten immer um ein Zeichen gekürzt.
    C) Desweiteren dürfen für eine bestimmte Kombination immer 1 Zeichen aus dem String weggelassen werden.

    Im Prizip habe ich aus obigem String also folgende Kombinationsmöglichkeiten:

    [B]Der Anfangsstring:[/B]
    abcde
    
    [b]Alle Kombinationen bei denen das letzte Zeichen entfernt worden ist:[/b]
    abcd
    abc
    ab
    a
    
    [b]Alle Kombinationen bei denen a entfernt worden ist und anschließend
    das letzte Zeichen entfernt worden ist[/b]
    bcde
    bcd
    bc
    b
    
    [b]Alle Kombinationen bei denen b entfernt worden ist und anschließend 
    das letzte Zeichen entfernt worden ist[/b]
    acde
    acd
    ac
    a
    
    [b]Alle Kombinationen bei denen c entfernt worden ist und anschließend 
    das letzte Zeichen entfernt worden ist[/b]
    abde
    abd
    ab
    a
    
    [b]Alle Kombinationen bei denen d entfernt worden ist und anschließend 
    das letzte Zeichen entfernt worden ist[/b]
    abce
    abc
    ab
    a
    
    [b]Alle Kombinationen bei denen e entfernt worden ist und anschließend 
    das letzte Zeichen entfernt worden ist[/b]
    abcd
    abc
    ab
    a
    

    Da aber nun einige Kombinationen mehrfach vorkommen sieht das bereinigt so aus:

    abcde
    abcd
    abc
    ab
    a
    bcde
    bcd
    bc
    b
    acde
    acd
    ac
    abde
    abd
    abce
    

    Es gibt also insgesamt 15 Kombinationsmöglichkeiten.

    Tja und jetzt will ich das ganze in eine Formel packen,
    so daß ich die Kombinationsmöglichkeiten
    für einen String beliebiger Länge jederzeit ausrechnen kann.

    Also z.b. nen String mit 8, anstatt 5 Zeichen:
    abcdefgh

    oder mit 12, anstatt 5 Zeichen:
    abcdefghijkl

    Bleiben soll dabei, daß immmer nur maximal 1 Zeichen irgendwo innerhalb des
    String (z.b. anfang, mitte etc.) entfernt werden kann
    und an Ende maximal alle Zeichen entfernt werden können.
    Außerdem darf die Reihenfolge nie verändert werden.
    So etwas wie x^y geht also nicht.

    Wie packt man das in ne Formel?
    Bzw. wie lautet die Formel für so etwas?
    Kann man das überhaupt in eine einfache Formel packen?

    Es gibt z.b. für die Anzahl der Möglichkeiten in einem Byte folgende
    Formel:
    2^8 = 256 Möglichkeiten
    bzw.
    a^b für a die verfügbaren Zeichen und b für die Länge,
    aber da ist die Reihenfolge egal.
    Das funktioniert also nicht, aber dafür gibt es wenigstens eine Formel und ich brauche jetzt etwas ähnliches.



  • Auf dem Klo hatte ich gerade einen Lichtblick. 💡

    Und zwar ist mir die Formel für den kleinen Gauß eingefallen.
    http://de.wikipedia.org/wiki/Gaußsche_Summenformel

    Also
    (n*(n+1))/2

    Das ergibt, wenn man für n = 5 einsetzt genau 15.
    Und paßt im Großen und ganzen bei Längen von 3 und 4 Zeichen.

    Lediglich bei 3 Zeichen muß noch eine 1 addiert werden.

    Haut das hin?



  • Hm, war wohl doch nicht.

    Spätestens ab 6 Zeichen stimmts nicht mehr, da müßte 21 Kombinationsmöglichkeiten rauskommen.

    Jedenfalls habe ich mir weiter Überlegungen gemacht.
    In jedem Durchgang wird der String ja um 1 Zeichen gekürzt.
    Bei Einer Stringlänge von 100 habe ich also erstmal 100 Kombinationsmöglichkeiten.
    Da aber jetzt noch aus den 100 zeichen bei jedem Durchgang genau eines entfernt werden darf, habe ich 100*100 Kombinationen.

    Tja und hier ist das Problem, die Überlegung ist zwar erstmal richtig,
    aber leider sind bei dieser Formel x*y auch die doppelten Kombinationen dabei
    und die sollten ja eigentlich eleminiert werden. 😞

    EDIT:

    So, ich glaube ich hab's jetzt:
    [code]
    123456
    12345
    1234
    123
    12
    1
    23456
    2345
    234
    23
    2
    1 3456
    1 345
    1 34
    1 3
    12 456
    12 45
    12 4
    123 56
    123 5
    1234 6
    [/QUOTE]

    Das ist nichts anderes als:

    61 Kombinationen
    5
    1 "
    41 "
    3
    1 "
    21 "
    1
    1 "
    Und das ganze dann als Summe gibt die Gesamtanzahl von 21.

    Also ist meine Formel:
    Ergebnis = 1 + 2 + 3 + ... + n

    me = Genius 🙂



  • Äh, sorry, es wird noch besser.

    Der kleine Gauss stimmt doch.
    habe für 6 am Anfang nämlich ne falsche Zahl benutzt.

    Also ist die Formel:

    (n(n+1))/2

    me = Genius++ 😃


  • Gesperrt

    Für was braucht man diese Art von Kombinationen eigentlich??



  • titan99_ schrieb:

    Für was braucht man diese Art von Kombinationen eigentlich??

    Ich brauch's für nen Passwortcracker



  • Formelproblem schrieb:

    ...
    Da aber nun einige Kombinationen mehrfach vorkommen sieht das bereinigt so aus:

    abcde
    abcd
    abc
    ab
    a
    bcde
    bcd
    bc
    b
    acde
    acd
    ac
    abde
    abd
    abce
    

    Es gibt also insgesamt 15 Kombinationsmöglichkeiten.
    ...

    Das Alfabeet hat aber etwas mehr als nur 5 Buchstaben



  • abviele schrieb:

    Das Alfabeet hat aber etwas mehr als nur 5 Buchstaben

    Ja. Und? Was möchtest du mir jetzt damit sagen?



  • Das es bei einem fünfstelligen Wort ein paar Möglichkeiten mehr als nur 15 gibt. Angenommen es würden nur Großbuchstaben, ohne Umlaute zugelassen, das wären 26 Buchstaben. Damit ergeben sich bei einem fünfstelligen Wort 26^5 (sprich: sechsundzwanzig hoch fünf) Möglichkeiten.
    MfG,
    a.


Anmelden zum Antworten