Ein möglicher Algorithmus zur Bestimmung, ob zwei Strings Anagramme voneinander sind? [geschlossen]

8

Ich habe diese Idee (in C-Sprache), um zu überprüfen, ob zwei aus ASCII-Buchstaben gebildete Strings Anagramme voneinander sind:

  1. Überprüfen Sie, ob die Zeichenfolgen die gleiche Länge haben.

  2. Überprüfen Sie, ob die Summe der ASCII-Werte aller Zeichen für beide Zeichenfolgen gleich ist.

  3. Überprüfen Sie, ob das Produkt der ASCII-Werte aller Zeichen für beide Zeichenfolgen gleich ist.

Ich glaube, wenn alle drei richtig sind, müssen die Strings Anagramme von einander sein. Ich kann es jedoch nicht beweisen. Kann mir jemand helfen, zu beweisen oder zu widerlegen, dass das funktionieren würde?

Danke!

    
Alex Goltser 06.02.2013, 21:30
quelle

5 Antworten

11

Ich habe ein schnelles Programm geschrieben, um nach Konflikten zu suchen und fand heraus, dass dieser Ansatz nicht funktioniert. Die Zeichenfolgen ABFN und AAHM haben die gleiche ASCII-Summe und das gleiche Produkt, sind jedoch keine Anagramme voneinander. Ihre ASCII Summe ist 279 und ASCII Produkt ist 23.423.400.

Es gibt viel mehr Konflikte als das. Mein Programm, das über alle Länge-vier-Zeichenfolgen suchte, fand 11.737 Konflikte.

Als Referenz ist hier der C ++ - Quellcode:

%Vor%

Hoffe, das hilft!

    
templatetypedef 06.02.2013, 21:52
quelle
5

Ihr Ansatz ist falsch; Ich kann nicht erklären, warum, weil ich es nicht verstehe, aber es gibt verschiedene Sätze für die Kardinalität 3, die dieselbe Summe und dasselbe Produkt haben: Ссылка

    
G. Bach 06.02.2013 21:50
quelle
5

Die Buchstaben a-z und A-Z werden verwendet, um ein Array von 26 Primzahlen zu indizieren, und das Produkt dieser Primzahlen wird als Hash-Wert für das Wort verwendet. Gleiches Produkt & lt; - & gt; gleiche Buchstaben.

(die Reihenfolge der Hashwerte im primes26 [] Array im unteren Fragment basiert auf den Buchstabenhäufigkeiten in der niederländischen Sprache, als Versuch, das erwartete Produkt zu mimimieren)

%Vor%     
wildplasser 06.02.2013 22:17
quelle
3

Danke für die tolle Frage! Anstatt zu versuchen, Ihren Vorschlag gänzlich zu widerlegen, habe ich irgendwann versucht, Wege zu finden, um ihn zu vergrößern, so dass er wahr wird. Ich habe das Gefühl, dass, wenn die Standardabweichungen gleich sind, die beiden gleich sind. Aber anstatt so weit zu testen, mache ich einen einfacheren Test und habe noch kein Gegenbeispiel gefunden. Hier ist was ich getestet habe:

Zusätzlich zu den von Ihnen genannten Bedingungen

  • ASCII Quadratwurzel der Summe der quares mut gleich:

Ich benutze das folgende Python-Programm. Ich habe keinen vollständigen Beweis, aber vielleicht hilft meine Antwort. Wie auch immer, schau es dir an.

%Vor%     
Konsol Labapen 07.02.2013 00:44
quelle
1

Wenn es Ihnen nichts ausmacht, die Zeichenfolgen zu ändern, sortieren Sie sie und vergleichen Sie die beiden Signaturen.

    
user448810 06.02.2013 22:08
quelle

Tags und Links