Ich habe eine Liste von möglichen Gruppen für eine Liste von Strings. Jede Zeichenfolge besteht aus mehreren Wörtern, die die Zeichenfolgenelemente sind. Ich möchte die Strings nach diesen Elementen gruppieren.Gruppierung von Strings
Jede Gruppe basiert auf einem gemeinsamen Wort: Alle Strings in der Gruppe müssen dieses Wort enthalten - obwohl ich nicht verlangen muss, dass alle Strings, die dieses Wort enthalten, in derselben Gruppe sind. Eine Zeichenkette mit N Worten kann in einem beliebigen N verschiedenen Gruppen stehen. Jeder String darf nur in einer Gruppe sein. Jede Gruppe muss mindestens zwei Strings haben.
Ziel: Bilden Sie die Gruppen, um die Anzahl der Zeichenfolgen zu maximieren, die sich in einer Gruppe befinden (minimieren Sie "verwaiste" Zeichenfolgen).
Zum Beispiel, wenn ich die folgende Liste von Zeichenketten haben:
cycle cost
pump cost
cycle analysis
cost example
Ich hätte alle möglichen Wörter jedes Strings als potentielle Gruppen. Ich möchte nun diese Zeichenfolgen so gruppieren, dass alle oder so viele wie möglich in eine Gruppe gelangen.
Ich habe den naiven Ansatz versucht, die Gruppe mit den meisten Strings zuerst zu nehmen, was in diesem Beispiel cost
wäre, aber dies lässt cycle analysis
ohne eine Gruppe.
Das Ergebnis bin ich in diesem Beispiel suchen ist:
cycle: cycle cost, cycle analysis
cost: pump cost, cost example
Gibt es dort einen Algorithmus für diese Art von Problem schon? Hinweise zur Vorgehensweise wären hilfreich.
Das war wirklich ein Bissen. Alles hängt davon ab, wie die Strings und Gruppen verknüpft sind. Können Sie das erläutern und, wenn es hilft, ein einfaches Beispiel geben? – JCKaz
Können Sie ein Beispiel geben, was Sie wollen? – sourabh1024
Ich habe ein Beispiel hinzugefügt, um zu verdeutlichen, was ich meine. –