Hilfe bei folgendem kombinatorischen Problem?


8

Ich habe Bitvektoren, von denen jeder aus Bits besteht. Bezeichnen wir mit das te Bit des ten Vektors . Jeder Bitvektor unterliegt den folgenden 2 Einschränkungen:mmvi[j]jii,j[1,m]vi

  1. vi[j]=0 ji .
  2. vi[j]=1 j<imlog(m) .
  3. Die Bits, die nicht unter die oben genannten Einschränkungen fallen, können entweder oder , aber in diesem Fall kann die Anzahl der höchstens . 01012

Jetzt habe ich einen anderen Bitvektor mit Bits: Anfangs werden alle Bits von auf . Mit "Anwenden von auf " meine ich, ein bitweises UND zwischen und durchzuführen und dann das Ergebnis in speichern . Ich interessiere mich für die Entwicklung von nach wiederholten Anwendungen der in der Eingabe angegebenen Vektoren . m m s 1 v i s s v i s s v 1 , . . . , v msmms1vissvissv1,...,vm

Nennen wir diese "wiederholten Anwendungen" eine Trajektorie und definieren wir diese Trajektorie formeller. Eine Trajektorie ist eine Sequenz, die aus höchstens Vektoren (ausgewählt aus den in der Eingabe angegebenen ) besteht, so dass, wenn in der Sequenz ist, alle danach . So ist beispielsweise eine Trajektorie, während nicht ist (weil ). v 1 , . . . , v m v i v j j < i < v 8 , v 3 > < v 3 , v 8 , v 7 > 8 3mv1,...,vmvivjj<i<v8,v3><v3,v8,v7>83

Offensichtlich gibt es verschiedene Flugbahnen. Sei . Nehmen wir nehmen und lassen es eine Bahn durchlaufen : für jeden Schritt der Bahn , setzen Sie den neuen Wert genommen von in . Wiederholen Sie dann den gleichen Vorgang für eine andere Trajektorie (immer beginnend mit und immer jeden neuen Wert von in ). Andererseits, bis Sie alle möglichen Trajektorien ausprobiert haben . Am Ende enthält die Menge alle möglichen Werte, die S = s = 1 m T 12mS=s=1mT1 s S T 2 s = 1 m s S 2 m S sT1sST2s=1msS2mSs kann angesichts der eingegebenen Vektoren jemals annehmen.

Fragen

  1. Ich habe in der Eingabe. Ich möchte wissen , Das heißt , wie viele verschiedene Werte kann je annehmen. Natürlich möchte ich berechnen effizient, dh ohne alle möglichen Trajektorien einzeln auszuprobieren.| S | s | S |vi,...,vm|S|s|S|
  2. Angenommen , der 2 entfernen nd Beschränkung der Vektoren in Eingangs. Wie sich dies auf auswirkt ? |S|
  3. Noch wichtiger ist, wie mich am meisten interessiert wächst mit . Isthöchstens Polynom in ? Isthöchstens subexponentiell in ? Oder gibt es schlechte Instanzen, auf denenist notwendigerweise exponentiell in ?m | S | m | S | m | S | m|S|m|S|m|S|m|S|m

Die folgende Abbildung ist ein Beispiel mit : m=17Beispiel

Ich sammle experimentelle Daten, um herauszufinden, welche Beziehung zwischen und. Bisher scheinen Experimente darauf hinzudeuten, dasswächst schneller als und langsamer als . Im Moment haben diese Daten jedoch keine große Bedeutung: Ich konnte nur Tests bis zu , daher kann es eine große versteckte Konstante oder einen anderen Faktor geben, der ein Exponentialgesetz wie ein Polynomgesetz für kleines aussehen lässt . Ich brauche Hilfe, um das asymptotische Verhalten von herauszufinden in Bezug auf . | S | | S | m 3 m 4 m = 90 m | S | mm|S||S|m3m4m=90m|S|m


4
@ Downvoter: Warum Downvoting? Bitte motivieren.
Giorgio Camerani

Sind die Flugbahnen nicht zu kompliziert? Sie könnten einfach über Teilmengen von{1m}
Peter Taylor

@Peter: Ja, eine Flugbahn ist nichts anderes als eine Teilmenge von . Ich habe nur gedacht, dass das Sprechen über Flugbahnen ein intuitiveres, "visuelles" Bild des Problems ergeben hätte. Ich wollte den Akzent auf die Entwicklung des Vektors setzen , um die Tatsache zu betonen , dass ich interessiert bin, wie viele verschiedene Werte in allen seinen möglichen Entwicklungen übernehmen. s s{1,...,m}ss
Giorgio Camerani

3
@Walter: Ein möglicher Grund für die Abstimmungen ist der Titel der Frage, der nicht weiterhilft. Möglicherweise möchten Sie es so umformulieren, dass es keine "Hilfe" enthält, und möglicherweise auf die Objekte hinweisen, die Sie zählen möchten. Prost!
Michaël Cadilhac

@ MichaëlCadilhac: Ja, zugegebenermaßen ist der Titel sehr allgemein. Wahrscheinlich werde ich es in etwas "Attraktiveres" ändern . Danke für deinen Hinweis, Prost!
Giorgio Camerani

Antworten:


8

Ich habe das überdacht und meine anfängliche Bindung war korrekt. Im schlimmsten Fall|S|=Θ(m2mlgm)

Der Beweis besteht aus zwei Teilen. Erstens . Betrachten Sie die möglichen Werte von einer Trajektorie, die bei endet . Jedes Bit für ist 0, und jedes Bit für ist 1. Daher gibt es nur Werte, die annehmen können. Multiplizieren Sie mit der Anzahl von und wir haben die Obergrenze.|S|=O(m2mlgm)svxs[j]jxs[j]j<xmlgm2mlgmsvx

Zweitens betrachten

    0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 
    0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 
    0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
    0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 
    0 0 0 0  1 1 1 0 1 1 1 1 1 1 1 1 
    0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    ...
    0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

Ich behaupte, dass dieses Schema Ihnen . Berücksichtigen Sie für jede Spalte auch die Spalten rechts davon. Jede der -Kombinationen ergibt ein anderes , und in jedem dieser das oberste gesetzte Bit das oberste gesetzte Bit von , so dass es kein Doppel gibt -Zählen zwischen verschiedenen .|S|=Ω(m2mlgm)vx(mlgm2)2mlgm2ssvxvx


Danke für deine Antwort. Haben Sie eine Ahnung, ob die dritte Einschränkung (dh nicht mehr als Nullen) einen Unterschied macht? Mit anderen Worten, glauben Sie, dass die Beschränkung der Nullen auf höchstens impliziert, dass die Anzahl der verschiedenen Werte, die durch Trajektorien eingeführt werden, die bei enden, viel weniger als (mit "viel weniger" meine ich nicht exponentiell in )? Ich habe das Gefühl, dass es keinen Unterschied macht: Selbst wenn wir höchstens Null zulassen , scheint es, dass wir für mindestens ein unterschiedliche Werte erzeugen können . 1212vx2m/logmm/logm12m/logmvx
Giorgio Camerani

@WalterBishop, mein Beispiel verwendet nicht mehr als 1 Null.
Peter Taylor

Entschuldigung, ich habe sowohl die Antwort als auch das Beispiel zu schnell analysiert.
Giorgio Camerani

@WalterBishop, obwohl Sie erhalten, wenn Sie stattdessen die Anzahl der Einsen einschränken (nicht mehr als der freien Werte in einem Vektor können 1 sein) k|S|=O(mk+1)
Peter Taylor

Wie leitet man in einem solchen Fall ab? Mir scheint, in einem solchen Fall hätten wir (da konstant ist). Da AND-ing 2 Vektoren, ein kann ein geworden aber eine kann kein werden : also, unabhängig von der Tatsache , dass unsere „Schiebefenster“ hat Vektoren können wir erzeugen höchstens verschieden Vektoren für jede der Positionen des "Schiebefensters" . Vermisse ich etwas | S | = O ( m 2 k ) = O ( m ) k 1 0 0 1 m / l o g m 2 k m|S|=O(mk+1)|S|=O(m2k)=O(m)k1001m/logm2km
Giorgio Camerani
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.