Übung
Steffen Reith
3.5.17
Aufgang
:nur
Ideen
: - Band
durchlaufen
istnotwendig
, denn sonst könnteman
Oidi
nicht vonOi
"ti
0 unterscheiden .Band durchlaufen
kostet Oln)
⇒ maximal
Ollogu
) mal dasBand
durch mustern- # ten und # den halbieren , das
geht logn
- mal- Zeichen nicht löschen
, sondern als
gelöscht
markierenBSA
-000111 → O # 01 # 1 → O # # 1 # # → awz- 00111 → abl , da Anzahl
ungerade
- 00011111 → 0 # 0 1 # 1 # 1
Pseudocode :
1,
prüfe
obEingabe
nur aus B besteht Cizo ) , wenn0h
) {
ja
ahz2,
prüfe
obEingabe
die Form Ottt hat und obOl "
) |
Iwl gerade . Wenn nicht ablehnen3, Lösche
jede
zweite Null bzw . Eins durch eine Lösch .markierung (
z . B. #)
. Um kopieren dauert zu° "
) |
# wird in
Zukunft ignoriert
lange
.ocu
, { 4) Überprüfe
ablehnen , ob # ten und # oen , wenn nichtOllogn
){
5 , Schritt 3 und 4 wiederholen bis nur noch eine 0Durchläuft
und 1 vor kommen
dann
Wenn ~
genau
eine 0und
eine 1 ⇒ awzOln
) {
sonst ablehnenLaufzeit
: 0h ) toln)
+(
Olu ) t Ocu )) Ollogu )
t Olu)
=
Olulogu )
Teilte
:Idee
: - zählebinär
0 und den-
Binär darstellung
von ubraucht Oclogn )
Bits04 ) -
{
1,überprüfe
Form0×19
. Falls x.gzo
awz .Speicher
Ollog ) {
2 , zähle Oenauf
2. Band binärSPÜLT
{
3 , schreibe Treuenmarking
Ollogu
) .{ 4
, zähle denauf Band
2 binär(
nach #)
Speicher
guy
.{
5 , vergleicheBinär
zahlen links und rechts vom #Speicher Wenn
gleich
⇒ awz sonstablehnen
⇒ zusammen