Изменения

Перейти к: навигация, поиск

Обсуждение участницы:Анна

3572 байта убрано, 16:16, 4 января 2017
Нет описания правки
{{Теорема|statement= Задача о проверке на пустоту пересечения двух КС-грамматик неразрешима.|proof= Пусть <tex> P A = \{ (G_1, G_2) \mid p_iL(G_1) \cap L(G_2) =1 \mid varnothing \sum w_i U_i}</tex> ={{Задача. Сведем [[Примеры неразрешимых задач: проблема соответствий Поста|definition=Дано проблему соответствий Поста]] к <tex>m\overline{A}</tex> одинаковых станков, на которых нужно выполнить таким образом показав, что дополнение проблемы неразрешимо. Так как рекурсивные языки [[Замкнутость разрешимых и перечислимых языков относительно теоретико-множественных и алгебраических операций|замкнуты относительно дополнения]], то из неразрешимости дополнения проблемы будет следовать неразрешимость самой проблемы. Для любого экземпляра ПСП <tex>n(x_1, x_2, ..., x_n)</tex> работ. Любая работа на любом станке выполняется единицу времени. Для каждой работы есть время окончания и <tex>d_i(y_1, y_2, ..., y_n)</tex> {{---}} ожидается, что до этого времени она будет закончена, и штраф над алфавитом <tex>w_i\Sigma</tex>, который нужно будет выплатить в случае, если работа была закончена после можно подобрать символ <tex>d_i\# \notin \Sigma</tex>. Необходимо минимизировать суммарный штраф, который придется выплатить.}} == Описание алгоритма ==Для каждого экземпляра построим грамматики:Оптимальное расписание для этой задачи будем задавать множеством работ * <tex>G_1 : S\rightarrow aSa \mid a\#a</tex>, которые будут выполнены в начале, как после будет показано, именно за эти работы штраф начислен не будет. Работы, которые не войдут в для всех <tex>Sa \in \Sigma</tex>, то есть завершатся с опозданием, могут быть выполнены в конце в любом порядке.Тогда <brtex>Чтобы построить множество L(G_1) = \{ w\#w^R \mid w \in \Sigma^* \}</tex>, где обозначение <tex>Sw^R</tex>, будем добавлять работы в порядке неуменьшения их времен окончания, и как только некоторая работа {{---}} разворот <tex>jw</tex> опаздывает, удалим из .* <tex>G_2 : S\rightarrow x_iSy^R_i \mid x_i\#y^R_i</tex> работу с минимальным значением для всех <tex>w_ii = 1, 2, \dots n</tex> и поставим . Тогда <tex>jL(G_2) = \{ x_{i_1} x_{i_2} \dots x_{i_m} \# (y_{i_1} y_{i_2} \dots y_{i_m})^R \mid i_1, i_2, \dots i_m \in \{ 1, 2, \dots n \}, m \geqslant 1 \}</tex> на ее местоЕсли данный экземпляр ПСП имеет решение, то <brtex>Пусть есть работы L(G_2)</tex> содержит хотя бы одну строку вида <tex>1 w\cdots n#w^R</tex> с временами окончания , поэтому <tex>d_1 L(G_1) \leq d_2 cap L(G_2) \leq ne \cdots \leq d_nvarnothing</tex>. Будем называть ''простоем '' временной интервал, в который на машине ничего и наоборот, если он не имеет решения, то <tex>L(G_2)</tex> не обрабатывается. Тогда следующий алгоритм вычислит оптимальное множество содержит строк такого вида, соответственно <tex>SL(G_1) \cap L(G_2) = \varnothing</tex>.
<tex>S \leftarrow \varnothing</tex> '''for''' <tex>j = 1</tex> '''to''' <tex>n</tex>: '''if''' <tex>j</tex> опаздывает, и все более ранние простои заполнены: найти Таким образом мы свели проблему соответствий Поста к <tex>i: w[i] = \min\limits_overline{k \in SA}(w[k])</tex> '''if''' <tex>w[i] < w[j]</tex>: заменить <tex>i</tex> на <tex>j</tex> в <tex>S</tex> '''else''': добавить <tex>i</tex> в <tex>S</tex> и поставить <tex>i</tex> на место самого раннего простояТаким образом, работыследовательно, не попавшие в <tex>S</tex>, будут иметь минимальное значение <tex>w_i</tex>.== Доказательство корректности =={{Теорема|statement=Вышеописанный алгоритм корректен и строит оптимальное множество работ <tex>S</tex>задача о проверке на пустоту пересечения двух КС-грамматик неразрешима.|proof=Пусть <tex>S</tex> {{---}} множество работ, вычисленное с помощью алгоритмаИз неразрешимости вышеприведенной задачи следует неразрешимость ряда других задач. Тогда все работы, находящиеся в этом множестве, будут выполнены в срок, то есть штраф за них налагаться не будет, так как если работа <tex>j</tex> заменила работу <tex>i</tex>, которая успевала выполниться до истечения <tex>d_i</tex>, то <tex>j</tex> так же успеет выполниться в срок, потому что <tex>d_i \leq d_j</tex>Рассмотрим несколько примеров.<br>Пусть <tex>S^*</tex> {{--По двум КС-}} множество работ без штрафов в оптимальном расписании.<br>Определим работы грамматикам <tex>lG_1</tex> и <tex>kG_2</tex> следующим образом:* <tex>l</tex> {{можно построить КС-грамматику для [[Замкнутость КС--}} первая работа в языков относительно различных операций#.D0.9A.D0.BE.D0.BD.D0.BA.D0.B0.D1.82.D0.B5.D0.BD.D0.B0.D1.86.D0.B8.D1.8F|конкатенации]] задаваемых ими языков <tex>SL(G_1)L(G_2)</tex>: . По аналогии с этим мы можем рассматривать язык <tex>l L(G_1)\notin S^*#L(G_2)\#</tex>* , где <tex>k\#</tex> {{---}} первая работа в <tex>S^*</tex>: <tex>k \notin S</tex>Покажемновый символ, что не встречающийся в <tex>S^*</tex> работа <tex>k</tex> может быть заменена работой <tex>l</tex> без увеличения значения целевой функции. Рассмотрим два случая:<br>1. Пусть <tex>l < k</tex>алфавите.<br>ТоЗаметим, что <tex>k</tex> не принадлежит множеству <tex>S</tex>пересечение языков непусто, значит, что либо на некотором шаге появилась опаздывающая работа <tex>j</tex>, которая заменила <tex>k</tex>, либо работа <tex>k</tex> опаздывала и <tex>w_k</tex> было меньше то есть <tex>L(G_1) \mincap L(G_2) \limits_{i ne \in S}w_ivarnothing </tex>, тогда и поэтому она не была добавлена. В любом случае в это время работа <tex>l</tex> уже принадлежала <tex>S</tex>. Из этого следуеттолько тогда, что когда <tex>w_k L(G_1)\leq w_l#L(G_2)\#</tex>, во втором случае очевидно, почему, а в первом {{содержит [[Алгоритм Ландау---}} потому что на этапе замены мы выбрали <tex>k</tex>, а не <tex>l</tex>Шмидта#.D0.9E.D0.BF.D1.80.D0.B5.D0. Следовательно, мы не ухудшим целевую функцию заменой <tex>k</tex> на <tex>l</tex>B4.<br>2D0. Пусть <tex>l > k</tex>B5.<br>Замена работы <tex>k</tex> в <tex>S^*</tex> на работу <tex>l</tex> не противоречит условию, что за все работы в этом множестве штраф налагаться не будет, так как <tex>k</tex> выполнялась в срок, а <tex>d_k \leq d_l</tex> и все работы выполняются одинаковое количество времениD0. Следовательно, <tex>l</tex> так же будет выполнена в срокBB. Осталось доказать, что <tex>w_k \leq w_l</tex>D0. <br>Пусть работа <tex>k_{i_0} = k</tex> была заменена работой <tex>i_0</tex>, а так же <tex>k_{i_1} \cdots k_{i_r}</tex> {{---}} последовательность работ из <tex>S</tex>, каждая из которых была на некотором шаге заменена работой <tex>i_1 \cdots i_r</tex> соответственноB5. Тогда <tex>i_0 < i_1 < \cdots < i_r</tex>D0.<br>[[Файл:ShBD.jpg|250px|thumb|right|РисD0. 1B8. <tex>i_v</tex> превосходит <tex>i_u</tex>D1.8F|тандемный повтор]].  Будем говорить <tex>i_v</tex> ''превосходит'' <tex>i_u</tex>Аналогично можно заметить, где что пересечение <tex>u < vL(G_1) \cap L(G_2) \ne \varnothing </tex>тогда и только тогда, если когда <tex>k_{i_v} L(G_1)\leq i_u#L(G_2)^R</tex>содержит палиндром. Тогда <tex>w_{k_{i_v}} \geq w_{k_{i_u}}</tex> Таким образом, так как когда мы вставляли работу <tex>i_u</tex> мы выбрали для замены <tex>k_имеем:{i_u}</tex>, то есть ее вес был минимальным среди всех работ, находившихся на тот момент в <tex>S</tex>, включая <tex>k_{i_v}</tex>. Для большей ясности на рисунке 1 показано, в каком порядке располагаются эти работы относительно друг друга согласно их номерам.<br>УтверждениеЕсли из последовательности |statement= Пусть дана грамматика <tex>i_0 < i_1 < \cdots < i_rG</tex> можно выделить подпоследовательность , <tex>j_0 L(G) = i_0 < j_1 < \cdots < j_sL</tex> со свойствами. Тогда следующие задачи неразрешимы:* # Содержит ли <tex>j_{v + 1}</tex> превосходит <tex>j_v</tex>, где <tex>v \in [0 \cdots s - 1]L</tex>тандемный повтор.* # Содержит ли <tex>j_{s - 1} < l \leq j_sL</tex>,то <tex>w_l \geq w_{k_{j_s}} \geq \cdots \geq w_{k_{j_0}} = w_k</tex>,что доказывает теремупалиндром.<br>
}}
577
правок

Навигация