|
Pythagoras juni 1997Antwoorden 10e probleem van Hilbert | ||||||||||||||||||
Vraag 1Het programma luidt (achter de streepjes wordt de werking uitgelegd):1: schrijf een 1 2: ga 1 vakje naar links -- zoek naar links tot je een 1 3: als inhoud=0 ga naar stap 2 -- of een lege cel vindt 4: schrijf een 0 5: ga 1 vakje naar rechts -- zoek naar rechts tot je 6: als inhoud=0 ga naar stap 5 -- de laatst geschreven 1 vindt 7: schrijf een 0 -- vervang die door een 0 8: ga 1 vakje naar rechts -- kijk rechts 9: als inhoud=0 ga naar stap 1 -- als daar nog een 0 staat: herhaal alles 10: stop -- als daar een 1 of niets staat: stopDit programma verdubbelt het aantal nullen dat op de tape staat. Als de invoer bestaat uit vier nullen, dan maakt het programma de volgende stappen:
Begin: 0000
^
na stap 1 1000
^
na stap 2-3-4 01000
^
na stap 5-6-7 00000
^
na stap 8-9-1 00100
^
na stap 2-3-4 000100
^
na stap 5-6-7 000000
^
na stap 8-9-1 000010
^
na stap 2-3-4 0000010
^
na stap 5-6-7 0000000
^
na stap 8-9-1 0000001
^
na stap 2-3-4 00000001
^
na stap 5-6-7 00000000
^
na stap 8-9-10 00000000
^
Vraag 2Je kunt inderdaad een programma schrijven dat nagaat of de code voor een Turing-programma de stopcode 111 bevat. Hier is een voorbeeld. We nemen aan dat het programma rechts van de leeskop staat en dat er tussen de leeskop en het programma nullen staan.1: ga 1 vakje naar rechts 2: als inhoud=0 ga naar stap 1 -- we zoeken naar rechts tot de eerste 1 3: ga 1 vakje naar rechts -- gevonden, we gaan instructies lezen 4: als inhoud=0 ga naar stap 6 -- er komt 000, 001, 010 of 011 5: als inhoud=1 ga naar stap 10 -- er komt 100, 101 of 111 6: ga 1 vakje naar rechts 7: ga 1 vakje naar rechts 8: ga 1 vakje naar rechts -- de drie bits zijn gelezen 9: als inhoud=0 ga naar stap 6 -- weer een 0 10: ga 1 vakje naar rechts 11: als inhoud=1 ga naar stap 41 -- dit moet 111 zijn; geen 100 gevonden 12: ga 1 vakje naar rechts 13: als inhoud=0 ga naar stap 22 -- we hebben 100 gevonden 14: ga 1 vakje naar rechts -- het was 101, een `goto' dus 15: als inhoud=0 ga naar stap 19 -- nullen lezen 16: ga 1 vakje naar rechts -- enen lezen 17: als inhoud=1 ga naar stap 16 18: als inhoud=0 ga naar stap 3 -- volgende instructie 19: ga 1 vakje naar rechts -- nullen lezen 20: als inhoud=0 ga naar stap 19 21: als inhoud=1 ga naar stap 3 -- volgende instructie 22: ga 1 vakje naar rechts -- 100 gevonden en verder lezen 23: als inhoud=0 ga naar stap 25 -- 000, 001, 010 of 011 24: als inhoud=1 ga naar stap 10 -- 100, 101 of 111 25: ga 1 vakje naar rechts 26: ga 1 vakje naar rechts 27: ga 1 vakje naar rechts -- de drie bits zijn gelezen 28: als inhoud=0 ga naar stap 25 -- weer een 0 29: ga 1 vakje naar rechts 30: als inhoud=1 ga naar stap 45 -- dit moet 111 zijn; een 100 gevonden 31: ga 1 vakje naar rechts 32: als inhoud=0 ga naar stap 22 -- we hebben nog een 100 gevonden, blijf lezen 33: ga 1 vakje naar rechts -- het was 101, een `goto' dus 34: als inhoud=0 ga naar stap 38 -- nullen lezen 35: ga 1 vakje naar rechts -- enen lezen 36: als inhoud=1 ga naar stap 35 37: als inhoud=0 ga naar stap 22 -- volgende instructie 38: ga 1 vakje naar rechts -- nullen lezen 39: als inhoud=0 ga naar stap 38 40: als inhoud=1 ga naar stap 22 -- volgende instructie 41: ga 1 vakje naar rechts -- we zijn aan het eind, maar geen 100 gevonden 42: ga 1 vakje naar rechts 43: schrijf een 0 -- rechts naast de 111 een 0 zetten 44: stop 45: ga 1 vakje naar rechts -- we zijn aan het eind, en 100 gevonden 46: ga 1 vakje naar rechts 47: schrijf een 1 -- rechts naast de 111 een 1 zetten 48: stop Warning: setlocale() [function.setlocale]: Passing locale category name as string is deprecated. Use the LC_* -constants instead in /websites/users/pyth/public_html/pythwww/common/footer.php on line 5 | |||||||||||||||||||
| Laatst bijgewerkt op: Tuesday 27 May 2003, 14:10 | |||||||||||||||||||