Примеры неразрешимых задач: задача о замощении — различия между версиями
Whiplash (обсуждение | вклад) |
Whiplash (обсуждение | вклад) (→Постановка задачи) |
||
Строка 32: | Строка 32: | ||
Первый ряд заполняется начальной конфигурацией, а каждый следующий ряд соответствует следующей конфигурации. | Первый ряд заполняется начальной конфигурацией, а каждый следующий ряд соответствует следующей конфигурации. | ||
− | [[Файл: | + | [[Файл:Polyomino_init.png]] |
Теперь на основе заданной МТ будем строить набор полимино, которые будут иметь следующий вид: | Теперь на основе заданной МТ будем строить набор полимино, которые будут иметь следующий вид: | ||
− | [[Файл: | + | [[Файл:Polyomino_gen.png]] |
На каждой стороне такого полимино находится определенное число выступов/впадин. | На каждой стороне такого полимино находится определенное число выступов/впадин. | ||
Строка 44: | Строка 44: | ||
Сначала построим набор полимино, который задаёт начальную конфигурацию: | Сначала построим набор полимино, который задаёт начальную конфигурацию: | ||
− | [[Файл: | + | [[Файл:Polyomino_start.png]] |
где <tex>*</tex> – уникальные числа для каждых соседних двух полимино из начальной конфигурации. Первое полимино характеризует начальное состояние, последующие за ним кодируют входное слово, и завершающее полимино требуется для корректного замощения оставшейся части ряда. | где <tex>*</tex> – уникальные числа для каждых соседних двух полимино из начальной конфигурации. Первое полимино характеризует начальное состояние, последующие за ним кодируют входное слово, и завершающее полимино требуется для корректного замощения оставшейся части ряда. | ||
Строка 50: | Строка 50: | ||
Далее строим полимино для всех элементов алфавита <tex>c \in \Pi</tex>: | Далее строим полимино для всех элементов алфавита <tex>c \in \Pi</tex>: | ||
− | [[Файл: | + | [[Файл:Polyomino_alph.png]] |
В нем количество впадин слева равно количеству выступов справа. Такой тип полимино передает содержимое ленты МТ следующему ряду. | В нем количество впадин слева равно количеству выступов справа. Такой тип полимино передает содержимое ленты МТ следующему ряду. | ||
Строка 56: | Строка 56: | ||
Теперь построим полимино для функции перехода <tex>\delta (a, c) = \langle p, d, D \rangle </tex>, где <tex>q \in Q, p \in Q, c \in \Pi, d \in \Pi, D\in \{\leftarrow, \downarrow, \rightarrow \}</tex>: | Теперь построим полимино для функции перехода <tex>\delta (a, c) = \langle p, d, D \rangle </tex>, где <tex>q \in Q, p \in Q, c \in \Pi, d \in \Pi, D\in \{\leftarrow, \downarrow, \rightarrow \}</tex>: | ||
− | [[Файл: | + | [[Файл:Polyomino_delta.png]] |
На рисунке изображены (сверху вниз) полимино соответствующие значениям <tex>D = \{\leftarrow, \downarrow, \rightarrow \}</tex>. Вместе со следующим типом они эмулируют перемещение головки МТ. | На рисунке изображены (сверху вниз) полимино соответствующие значениям <tex>D = \{\leftarrow, \downarrow, \rightarrow \}</tex>. Вместе со следующим типом они эмулируют перемещение головки МТ. | ||
Строка 62: | Строка 62: | ||
Далее построим следующий тип полимино: | Далее построим следующий тип полимино: | ||
− | [[Файл: | + | [[Файл:Polyomino_delta2.png]] |
Эти полимино получают на вход символ алфавита <tex>c</tex> от предыдущего ряда и состояние <tex>p</tex> от соседнего полимино, а затем передает следующему ряду пару из состояния и символа. | Эти полимино получают на вход символ алфавита <tex>c</tex> от предыдущего ряда и состояние <tex>p</tex> от соседнего полимино, а затем передает следующему ряду пару из состояния и символа. | ||
Строка 69: | Строка 69: | ||
Построим последний тип полимино, характеризующие состояния <tex>\#_Y</tex> и <tex>\#_N</tex>: | Построим последний тип полимино, характеризующие состояния <tex>\#_Y</tex> и <tex>\#_N</tex>: | ||
− | [[Файл: | + | [[Файл:Polyomino_halt.png]] |
Такое полимино имеет уникальное число выступов справа. Ни одно другое полимино из полученного набора не сможет к нему присоединиться, и процесс дальнейшего замощения будет невозможен. | Такое полимино имеет уникальное число выступов справа. Ни одно другое полимино из полученного набора не сможет к нему присоединиться, и процесс дальнейшего замощения будет невозможен. |
Версия 16:53, 4 января 2014
Определение: |
Полимино (полиомино, polyomino) - плоская геометрическая фигура, состоящая из | одноклеточных квадратов, соединенных по сторонам.
Пример
Определение: |
Замощение плоскости (tiling) - представление плоскости в виде множества полимино. |
Определение: |
плоскости можно замостить . |
Пример
Постановка задачи
Пусть даны некоторые типы полимино, причем экземпляров каждого типа дается бесконечно много. Верно ли, что используя любое количество полимино можно полностью замостить без пропусков и выступов четверть плоскости? Поворачивать полимино не разрешено.
Теорема: |
Задача о замощении четверти плоскости полимино неразрешима. |
Доказательство: |
Сведём неразрешимую Halt к данной задаче. Пусть дана машина Тьюринга и слово . Требуется определить, остановится ли данная МТ на входе . Будем эмулировать процесс выполнения МТ путем построения вертикальных рядов, каждый из которых эквивалентен конфигурации МТ на определенном этапе выполнения. Первый ряд заполняется начальной конфигурацией, а каждый следующий ряд соответствует следующей конфигурации. Теперь на основе заданной МТ будем строить набор полимино, которые будут иметь следующий вид: На каждой стороне такого полимино находится определенное число выступов/впадин. Каждому символу из алфавита, состоянию и паре из состояния и символа сопоставим некоторое уникальное число (можно ограничить ) – это и будет количество выступов/впадин находящихся на одной стороне полимино.
где – уникальные числа для каждых соседних двух полимино из начальной конфигурации. Первое полимино характеризует начальное состояние, последующие за ним кодируют входное слово, и завершающее полимино требуется для корректного замощения оставшейся части ряда.Далее строим полимино для всех элементов алфавита :В нем количество впадин слева равно количеству выступов справа. Такой тип полимино передает содержимое ленты МТ следующему ряду. Теперь построим полимино для функции перехода , где :На рисунке изображены (сверху вниз) полимино соответствующие значениям . Вместе со следующим типом они эмулируют перемещение головки МТ.Далее построим следующий тип полимино: Эти полимино получают на вход символ алфавита от предыдущего ряда и состояние от соседнего полимино, а затем передает следующему ряду пару из состояния и символа.
Такое полимино имеет уникальное число выступов справа. Ни одно другое полимино из полученного набора не сможет к нему присоединиться, и процесс дальнейшего замощения будет невозможен.
Таким образом, четверть плоскости замостится тогда и только тогда, когда закодировання МТ не останавливается на данном входе. Иными словами есть бесконечное количество конфигураций, не переходящих в конечное состояние. Это значит, что мы сможем замощать плоскость ряд за рядом бесконечное количество раз, что в результате замостит плоскость. Если же МТ остановится, то и замостить четверть плоскости мы не сможем из-за того, что конечное полимино не имеет продолжения.
|