2012-03-30 13 views
0

Was wäre der beste Algorithmus, um dieses Problem zu lösen? Ich habe ein paar Stunden mit diesem Problem verbracht. Aber konnte es nicht klären.Algorithmus zur Kategorisierung von Werten

Ein Mann kaufte eine Halskette und plante, sie in zwei Teile zu zerlegen, so dass die durchschnittliche Helligkeit jedes Stückes größer oder gleich dem Originalstück sein sollte.

Die Kriterien für die Unterteilung der Ketten sind

1.Die Unterschied in der Anzahl der Perlen zwischen den beiden Sätze Perlen nicht größer als 10% der Anzahl der Perlen in der ursprünglichen Kette oder 3 ist, je nachdem, was höher sein sollten.

2.Der Unterschied zwischen der Anzahl der Perlen in 2 Halsketten sollte minimal sein.

3. Wenn die durchschnittliche Helligkeit eines der Halsketten kleiner ist als die durchschnittliche Helligkeit des ursprünglichen Satzes, wird 0 als Ausgabe zurückgegeben.

4. Zwei Halsketten sollten ihre durchschnittliche Helligkeit größer als die ursprüngliche haben und der Unterschied zwischen der durchschnittlichen Helligkeit der beiden Stücke ist minimal.

5.Die durchschnittliche Helligkeit jedes Stückes sollte entweder größer oder gleich dem Originalstück sein.

+0

Sagen Sie uns, wie Sie "Helligkeit" messen, weil die kanonische Art der Berechnung eines Durchschnitts es für den Durchschnitt der Durchschnittswerte der Partitionen unmöglich machen würde größer sein als der Durchschnitt selbst. Außerdem, wenn man p Kunst ist höher als der ursprüngliche Durchschnitt, der andere Teil muss niedriger sein - das heißt, Sie müssen die Halskette genau in zwei Hälften teilen, um die gewünschten Ergebnisse zu erzielen. – Kaganar

+0

@Kaganar - Die Eingabewerte sind eine Menge numerischer Zahlen, z. B. - {10,6,3,9,7,2,5,8,4,1}, wobei 0 ≤ Helligkeit ≤ 10 ist. – eler

+0

Und Sie planen, diese in zwei Teile zu brechen, so dass der Durchschnitt jedes Teils gleich oder größer als der Durchschnitt des ursprünglichen Satzes ist? – Kaganar

Antwort

0

Dieses Problem ist ziemlich schwer effizient (irgendwo in NP).

Angenommen, Sie hatten einen Satz, der nach X gemittelt wurde. Das heißt, .

Angenommen, Sie brechen in Gruppen bis die jeweils in jedem Satz zu S und T mit s und t Artikel mitteln.

Sie können mathematisch beweisen, dass, wenn einer der Mittelwerte, S oder T größer als X ist, der andere der beiden muss kleiner sein als X.

Daher müssen die beiden Sätze genau die gleiche Helligkeit haben, denn nur so sind Ihre Bedingungen erfüllbar.

Wenn Sie dies wissen, enden Sie mit dem sumset sum Problem - Sie möchten eine Teilmenge finden, die genau zur Hälfte der Summe des gesamten Satzes addiert. Das ist ein bekanntes Problem. (Es wurde als NP klassifiziert. Und es ist nicht genau dasselbe wie das Subset-Summenproblem, aber wenn man den Durchschnitt des gesamten Sets von jedem der Helligkeitswerte subtrahiert, wird das Lösen des Subset-Summenproblems deine Antwort geben umgekehrt, um zu sehen, wie Sie die Teilmenge Summe Problem von Ihrem Problem lösen können.)

Daher gibt es keine schnelle Möglichkeit, dies zu tun - nur Näherungen oder exponentielle Laufzeiten ... Allerdings kann this helfen. Es erwähnt besser Laufzeiten, wenn Ihre Gewichte (in Ihrem Fall, Helligkeitsstufen) begrenzt sind

+0

Danke für Ihre großartige Hilfe. Ich werde hinein graben und dich wissen lassen. – eler

+0

Lassen Sie mich kurz machen, was ich verstanden habe. Zuerst müssen wir eine Teilmenge mit Summensumme finden. Dann subtrahiere den Durchschnitt der gesamten Menge von jedem Wert in der Teilmenge. Gehe ich in die richtige Richtung? – eler

+0

Sorry für die Verzögerung .. Und irgendwie, aber in der anderen Reihenfolge .. Zuerst subtrahieren Sie den Durchschnitt von jeder Helligkeitsstufe und lösen Sie dann das Subset-Summenproblem. Was immer auf null gesetzt wird, ist eine Hälfte, und der Rest des Satzes ist der andere. (Übrigens sollten beide Sätze zu Null addiert werden.) – Kaganar