You are on page 1of 2

EBKFS - Heimubung 8

Johannes Brandt Mtrklnr.: 6619008 Aufgabe 3


Es soll gezeigt werden, dass Partition p MaschinenScheduling Dazu muss gelten: w Partition f (w) MaschinenScheduling mit f (w) in polynomieller Zeit berechenbar. Idee: Sei w MaschinenScheduling, dann muss gelten: Summiert man die gegebenen Jobzeiten aus der Menge T auf, so gilt fr das Ergebnis e 2d. u Konstruktion Sei die DTM Mf mit Eingabe w = T, d , die die Funktion f in polynomieller Zeit berechnet, wie folgt konstruiert: 1. Bilde die Summe uber alle Elemente aus T und schreibe das Ergebnis e auf ein extra Band. Falls fr ein ti mit i {1, . . . , n} gilt, dass log ti > log 2d, akzeptiere. u 2. Rechne 2d e und schreibe dieses Ergebnis e ebenfalls auf ein extra Band. 3. Falls e > 0, erweitere die Menge T auf n + |e | Elemente mit tn+1,...,|n+e | = 1 4. Schreibe die Ausgabe f (w) = T . Laufzeit 1. Wie fr das Rucksackproblem bereits in der Vorlesung benutzt wurde, knnen u o zwei Zahlen mit hchstens b Bits in O(b2 ). berechnet werden. Da |T | = n, folgt o eine solche Addition n-mal, wobei eine einzelne Zahl aus T nicht mehr als log 2d Bits haben darf, ansonsten kann die Maschine einfach akzeptieren (nheres dazu a folgt dann im Korrektheitsbeweis). Also ergibt sich fr Schritt 1 eine Laufzeit u 2 von O(n log 2d). 2. Wie eine Addition, bentigt auch eine Subtraktion lediglich O(b2 ) Zeit. Die o Binrzahl von 2d als grte Zahl der Rechnung (gbe es eine Grere, htte die a o a o a Maschine bereits in Schritt 1 akzeptiert) verursacht dann letztendlich die dominante Laufzeit, somit Ergibt sich also fr den 2. Schritt die Laufzeit O(log2 2d)(2d u ist in der Binrdarstellung lediglich ein Leftshift und ndert somit nichts an der a a Laufzeit). 3. Da lediglich die Menge T in einer festgelegten Anzahl durchlaufen werden muss, gilt hier O(n + |e |). 4. Ahnlich wie in Schritt 3 luft die Ubertragung in eine neue Ausgabe auch in a O(n + |e |) Zeit. 1

Markus Kuhn Mtrklnr.: 6619008

EBKfS Ubungsgruppe 07

Johannes Brandt Markus Kuhn

Mf rechnet mit O(n log2 2d) + O(log2 2d) + O(2(n + |e |)) O(n log2 2d) in polynomieller Zeit. Korrektheit Die Funktion f soll die Tatsache ausnutzen, dass die beiden zu testenden Sprachen im Wesen nicht sehr verschieden sind. Beide bilden Teilmengen und beide Summieren die Werte ihrer Teilmengen auf. Der unterschied liegt lediglich in der Ergebnisbetrachtung. Fr MaschinenScheduling mssen die Summierungen kleiner oder gleich eiu u ner Obergrenze d sein, bei Partition sollen die Aufsummierungen den gleichen Wert ergeben (wobei hier sogar gilt: T1 T2 = T und T1 T2 = ). Um also mit der DTM zu MaschinenScheduling ein Wort aus Partition zu berechnen, muss dafr gesorgt sein, dass es auch wirklich zwei Teilmengen mit dem selben u aufsummierten Wert d geben kann. Dazu rechnet Mf die Dierenz aus e = ti
i{1,...,n}

und 2d zu Wertemenge T hinzu, mit ti = 1 fr i {n + 1, . . . , n + e }. Ganz egal also u wenn z.B. eine oder beide Teilmengen < d, die Eins-Werte knnen immer so zu den o Teilmengen gewhlt werden, dass die Gesamtsumme gleich 2d ist, und beide Teilmena gen aufsummiert jeweils d ergeben.