Изменения

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

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

4988 байт убрано, 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 < v</tex>, если <tex>k_{i_v} L(G_1) \cap L(G_2) \leq i_u</tex>. Тогда <tex>w_{k_{i_v}} ne \geq w_{k_{i_u}}varnothing </tex>тогда и только тогда, так как когда мы вставляли работу <tex>i_u</tex> мы выбрали для замены <tex>k_{i_u}</tex>, то есть ее вес был минимальным среди всех работ, находившихся на тот момент в <tex>S</tex>, включая <tex>k_{i_v}L(G_1)\#L(G_2)^R</tex>содержит палиндром. Для большей ясности на рисунке 1 показано Таким образом, в каком порядке располагаются эти работы относительно друг друга согласно их номерам.<br>Если из последовательности <tex>i_0 < i_1 < \cdots < i_r</tex> можно выделить подпоследовательность <tex>j_0 = i_0 < j_1 < \cdots < j_s</tex> со свойствамимы имеем:* <tex>j_{v + 1}</tex> превосходит <tex>j_v</tex>, где <tex>v \in [0 \cdots s - 1]</tex>* <tex>j_{s - 1} < l \leq j_s</tex> ,Утверждението <tex>w_l \geq w_{k_{j_s}} \geq \cdots \geq w_{k_{j_0}} |statement= w_kПусть дана грамматика </tex>, что доказывает теорему.<br>В противном случае найдем такую работу <tex>i_t</tex> с наименьшим <tex>tG</tex>, что никакая работа <tex>i_v</tex>, где <tex>v > t</tex>, не превосходит <tex>i_t</tex>, причем <tex>i_t < lL(G) = L</tex>. По определению это значит, что после того, как работа <tex>i_t</tex> будет добавлена в <tex>S</tex>, ни одна работа <tex>i \leq i_t</tex> не будет удалена из этого множества. Так как <tex>i_t < l</tex>, то по определению <tex>l</tex> все работы, которые на момент добавления <tex>i_t</tex> находятся в <tex>S</tex>, так же должны принадлежать <tex>S^*</tex>. Покажем, что это приведет нас к противоречию.<br>Тогда следующие задачи неразрешимы:Пусть <tex>S_t</tex> {{---}} множество <tex>S</tex> после удаления <tex>k_{i_t}</tex> и добавления # Содержит ли <tex>i_tL</tex>тандемный повтор. Рассмотрим два случая:<br>а). Если <tex>k^* = k_{i_t} > k</tex>, то есть <tex>d_{k^*} \geq d_k</tex>, то мы можем заменить <tex>k</tex> на # Содержит ли <tex>k^*L</tex> в <tex>S^*</tex>, сохранив условие, что <tex>S^*</tex> не содержит опаздывающих работпалиндром.
}}
577
правок

Навигация