<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%3AQtr%2F1</id>
		<title>Участник:Qtr/1 - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%3AQtr%2F1"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;action=history"/>
		<updated>2026-06-11T15:49:18Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54905&amp;oldid=prev</id>
		<title>Qtr в 21:02, 7 июня 2016</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54905&amp;oldid=prev"/>
				<updated>2016-06-07T21:02:26Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 21:02, 7 июня 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l16&quot; &gt;Строка 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 16:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Предполагаем, что перед началом выполнения алгоритма выполняется, что &amp;lt;tex&amp;gt; 1 \leqslant d_{1} \leqslant d_{2} \leqslant ... \leqslant d_{n} &amp;lt;/tex&amp;gt;. Все работы, дедлайн которых равен &amp;lt;tex&amp;gt; 0 &amp;lt;/tex&amp;gt;, мы в любом случае выполнить без штрафа не успеем, поэтому их изначально можно отнести к просроченным.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Предполагаем, что перед началом выполнения алгоритма выполняется, что &amp;lt;tex&amp;gt; 1 \leqslant d_{1} \leqslant d_{2} \leqslant ... \leqslant d_{n} &amp;lt;/tex&amp;gt;. Все работы, дедлайн которых равен &amp;lt;tex&amp;gt; 0 &amp;lt;/tex&amp;gt;, мы в любом случае выполнить без штрафа не успеем, поэтому их изначально можно отнести к просроченным.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; {{---}} множество непросроченных работ, &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt; {{---}} текущее время.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;В псевдокоде используются переменные:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;*&lt;/ins&gt;&amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; {{---}} множество непросроченных работ, &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;*&lt;/ins&gt;&amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt; {{---}} текущее время.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; '''Set'''&amp;lt;'''int'''&amp;gt; p1sumwu('''int''' &amp;lt;tex&amp;gt;w[n]&amp;lt;/tex&amp;gt;, '''int''' &amp;lt;tex&amp;gt;d[n]&amp;lt;/tex&amp;gt;):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; '''Set'''&amp;lt;'''int'''&amp;gt; p1sumwu('''int''' &amp;lt;tex&amp;gt;w[n]&amp;lt;/tex&amp;gt;, '''int''' &amp;lt;tex&amp;gt;d[n]&amp;lt;/tex&amp;gt;):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l47&quot; &gt;Строка 47:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 49:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&amp;lt;tex&amp;gt; l &amp;lt; k &amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&amp;lt;tex&amp;gt; l &amp;lt; k &amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Так как работа &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; не содержится в &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, то либо она не была добавлена при ее рассмотрении, либо была заменена работой, рассмотренной позднее. В любом случае это означает, что &amp;lt;tex&amp;gt; w_{k} \leqslant w_{l} &amp;lt;/tex&amp;gt;. Так же по определению &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; все работы &amp;lt;tex&amp;gt; i \in S^* : i &amp;lt; k &amp;lt;/tex&amp;gt; должны содержаться и в &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;. Но тогда заменив в оптимальном расписании &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt;, мы сохраним корректность расписания и не увеличим минимизируемую функцию.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;:&lt;/ins&gt;Так как работа &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; не содержится в &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, то либо она не была добавлена при ее рассмотрении, либо была заменена работой, рассмотренной позднее. В любом случае это означает, что &amp;lt;tex&amp;gt; w_{k} \leqslant w_{l} &amp;lt;/tex&amp;gt;. Так же по определению &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; все работы &amp;lt;tex&amp;gt; i \in S^* : i &amp;lt; k &amp;lt;/tex&amp;gt; должны содержаться и в &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;. Но тогда заменив в оптимальном расписании &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt;, мы сохраним корректность расписания и не увеличим минимизируемую функцию.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&amp;lt;tex&amp;gt; k &amp;lt; l &amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&amp;lt;tex&amp;gt; k &amp;lt; l &amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Так как мы рассматриваем работы в порядке неубывания их дедлайнов, то, следовательно, &amp;lt;tex&amp;gt; d_{k} \leqslant d_{l} &amp;lt;/tex&amp;gt;, и замена работы &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; в оптимальном расписании &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt; не может сделать его некорректным. Тогда для доказательства нам осталось показать, что &amp;lt;tex&amp;gt; w_{k} \leqslant w_{l} &amp;lt;/tex&amp;gt;.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Пусть &amp;lt;tex&amp;gt; k_{i_{0}} = k &amp;lt;/tex&amp;gt; {{---}} работа, замененная работой &amp;lt;tex&amp;gt; i_{0} &amp;lt;/tex&amp;gt; в процессе построения &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, и пусть &amp;lt;tex&amp;gt; k_{i_{1}}, ..., k_{i_{r}} &amp;lt;/tex&amp;gt; {{---}} последовательность работ, которые были исключены из &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; после замены &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt;, причем работа &amp;lt;tex&amp;gt; k_{i_{v}} &amp;lt;/tex&amp;gt; была заменена работой &amp;lt;tex&amp;gt; i_{v} &amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt; i_{0} &amp;lt; i_{1} &amp;lt; ... &amp;lt; i_{r} &amp;lt;/tex&amp;gt;. Будем говорить, что &amp;quot;работа &amp;lt;tex&amp;gt; i_{v} &amp;lt;/tex&amp;gt; подавляет &amp;lt;tex&amp;gt; i_{m} &amp;lt;/tex&amp;gt;&amp;quot;, где &amp;lt;tex&amp;gt; m &amp;lt; v &amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt; k_{i_{v}} \leqslant i_{m} &amp;lt;/tex&amp;gt;. В таком случае получаем, что &amp;lt;tex&amp;gt; w_{k_{i_{v}}} \geqslant w_{k_{i_{m}}}&amp;lt;/tex&amp;gt;, потому что в противном случае работа &amp;lt;tex&amp;gt; k_{i_{v}} &amp;lt;/tex&amp;gt; была бы исключена из &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; раньше чем &amp;lt;tex&amp;gt; k_{i_{m}} &amp;lt;/tex&amp;gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;:Так как мы рассматриваем работы в порядке неубывания их дедлайнов, то, следовательно, &amp;lt;tex&amp;gt; d_{k} \leqslant d_{l} &amp;lt;/tex&amp;gt;, и замена работы &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; в оптимальном расписании &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt; не может сделать его некорректным. Тогда для доказательства нам осталось показать, что &amp;lt;tex&amp;gt; w_{k} \leqslant w_{l} &amp;lt;/tex&amp;gt;.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;:&lt;/ins&gt;Пусть &amp;lt;tex&amp;gt; k_{i_{0}} = k &amp;lt;/tex&amp;gt; {{---}} работа, замененная работой &amp;lt;tex&amp;gt; i_{0} &amp;lt;/tex&amp;gt; в процессе построения &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, и пусть &amp;lt;tex&amp;gt; k_{i_{1}}, ..., k_{i_{r}} &amp;lt;/tex&amp;gt; {{---}} последовательность работ, которые были исключены из &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; после замены &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt;, причем работа &amp;lt;tex&amp;gt; k_{i_{v}} &amp;lt;/tex&amp;gt; была заменена работой &amp;lt;tex&amp;gt; i_{v} &amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt; i_{0} &amp;lt; i_{1} &amp;lt; ... &amp;lt; i_{r} &amp;lt;/tex&amp;gt;. Будем говорить, что &amp;quot;работа &amp;lt;tex&amp;gt; i_{v} &amp;lt;/tex&amp;gt; подавляет &amp;lt;tex&amp;gt; i_{m} &amp;lt;/tex&amp;gt;&amp;quot;, где &amp;lt;tex&amp;gt; m &amp;lt; v &amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt; k_{i_{v}} \leqslant i_{m} &amp;lt;/tex&amp;gt;. В таком случае получаем, что &amp;lt;tex&amp;gt; w_{k_{i_{v}}} \geqslant w_{k_{i_{m}}}&amp;lt;/tex&amp;gt;, потому что в противном случае работа &amp;lt;tex&amp;gt; k_{i_{v}} &amp;lt;/tex&amp;gt; была бы исключена из &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; раньше чем &amp;lt;tex&amp;gt; k_{i_{m}} &amp;lt;/tex&amp;gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Если в последовательности &amp;lt;tex&amp;gt; i_{0} &amp;lt; i_{1} &amp;lt; ... &amp;lt; i_{r} &amp;lt;/tex&amp;gt; существует подпоследовательность &amp;lt;tex&amp;gt; j_{0} = i_{0} &amp;lt; j_{1} &amp;lt; ... &amp;lt; j_{s} &amp;lt;/tex&amp;gt; такая, что &amp;lt;tex&amp;gt; j_{v + 1} &amp;lt;/tex&amp;gt; подавляет &amp;lt;tex&amp;gt; j_{v} &amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt; v = 0,1, ..., s - 1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; j_{s - 1} &amp;lt; l \leqslant j_{s} &amp;lt;/tex&amp;gt;, то получаем, что &amp;lt;tex&amp;gt; w_{l} \geqslant w_{k_{j_{s}}} \geqslant ... \geqslant w_{k_{j_{0}}} = w_{k} &amp;lt;/tex&amp;gt;, что доказывает оптимальность расписания &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;:&lt;/ins&gt;Если в последовательности &amp;lt;tex&amp;gt; i_{0} &amp;lt; i_{1} &amp;lt; ... &amp;lt; i_{r} &amp;lt;/tex&amp;gt; существует подпоследовательность &amp;lt;tex&amp;gt; j_{0} = i_{0} &amp;lt; j_{1} &amp;lt; ... &amp;lt; j_{s} &amp;lt;/tex&amp;gt; такая, что &amp;lt;tex&amp;gt; j_{v + 1} &amp;lt;/tex&amp;gt; подавляет &amp;lt;tex&amp;gt; j_{v} &amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt; v = 0,1, ..., s - 1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; j_{s - 1} &amp;lt; l \leqslant j_{s} &amp;lt;/tex&amp;gt;, то получаем, что &amp;lt;tex&amp;gt; w_{l} \geqslant w_{k_{j_{s}}} \geqslant ... \geqslant w_{k_{j_{0}}} = w_{k} &amp;lt;/tex&amp;gt;, что доказывает оптимальность расписания &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Покажем, что отсутствие такой подпоследовательности приведет нас к противоречию, из чего будет следовать ее существование.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;:&lt;/ins&gt;Покажем, что отсутствие такой подпоследовательности приведет нас к противоречию, из чего будет следовать ее существование.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Предположим, что такой подпоследовательности не существует. Тогда найдем наименьшее &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt; такое, что не существует работы &amp;lt;tex&amp;gt; i_{v} : v &amp;gt; t &amp;lt;/tex&amp;gt;, которая бы подавляла работу &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt;, и &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt; было бы меньше &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt;. По определению &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt; и из факта, что &amp;lt;tex&amp;gt; i_{t} &amp;lt; l &amp;lt;/tex&amp;gt;, получаем, что после добавления во множество &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; работы &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt;, ни одна из работ, рассмотренных ранее, не будет удалена из &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, а так же все эти работы содержатся и в оптимальном расписании &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt;, поскольку &amp;lt;tex&amp;gt; i_t &amp;lt; l &amp;lt;/tex&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;:&lt;/ins&gt;Предположим, что такой подпоследовательности не существует. Тогда найдем наименьшее &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt; такое, что не существует работы &amp;lt;tex&amp;gt; i_{v} : v &amp;gt; t &amp;lt;/tex&amp;gt;, которая бы подавляла работу &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt;, и &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt; было бы меньше &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt;. По определению &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt; и из факта, что &amp;lt;tex&amp;gt; i_{t} &amp;lt; l &amp;lt;/tex&amp;gt;, получаем, что после добавления во множество &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; работы &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt;, ни одна из работ, рассмотренных ранее, не будет удалена из &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, а так же все эти работы содержатся и в оптимальном расписании &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt;, поскольку &amp;lt;tex&amp;gt; i_t &amp;lt; l &amp;lt;/tex&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Пусть &amp;lt;tex&amp;gt; S_t &amp;lt;/tex&amp;gt; это множество &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; после замены работы &amp;lt;tex&amp;gt; k_{i_t} &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; i_t &amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt; k_{i_t} &amp;gt; k &amp;lt;/tex&amp;gt;, то в оптимальном расписании &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt; мы можем заменить работу &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; k_{i_t} &amp;lt;/tex&amp;gt;, поскольку &amp;lt;tex&amp;gt; d_{k_{i_t}} \geqslant d_k &amp;lt;/tex&amp;gt;. Но так как &amp;lt;tex&amp;gt; S_t \subset S^* &amp;lt;/tex&amp;gt;, то все работы из множества &amp;lt;tex&amp;gt; S_t \cup \{k_{i_t}\} &amp;lt;/tex&amp;gt; могут быть выполнены до их дедлайнов, что противоречит построению &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;. Следовательно, &amp;lt;tex&amp;gt; k_{i_t} &amp;lt; k &amp;lt;/tex&amp;gt;. Тогда аналогично предыдущему случаю получаем, что все работы из множества &amp;lt;tex&amp;gt; S_t \cup \{k\} &amp;lt;/tex&amp;gt; могут быть выполнены вовремя. Кроме того, все работы из &amp;lt;tex&amp;gt; \{ j \in S_t | j &amp;lt; k \} \cup \{k_{i_t}\} &amp;lt;/tex&amp;gt; так же могут быть выполнены вовремя, что следует из построения &amp;lt;tex&amp;gt; S_t &amp;lt;/tex&amp;gt;. Но тогда получается, что все работы и из множества &amp;lt;tex&amp;gt; S_t \cup \{k_{i_t}\} &amp;lt;/tex&amp;gt; так же могут быть выполнены вовремя, что опять приводит нас к противоречию с построением &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;:&lt;/ins&gt;Пусть &amp;lt;tex&amp;gt; S_t &amp;lt;/tex&amp;gt; это множество &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; после замены работы &amp;lt;tex&amp;gt; k_{i_t} &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; i_t &amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt; k_{i_t} &amp;gt; k &amp;lt;/tex&amp;gt;, то в оптимальном расписании &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt; мы можем заменить работу &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; k_{i_t} &amp;lt;/tex&amp;gt;, поскольку &amp;lt;tex&amp;gt; d_{k_{i_t}} \geqslant d_k &amp;lt;/tex&amp;gt;. Но так как &amp;lt;tex&amp;gt; S_t \subset S^* &amp;lt;/tex&amp;gt;, то все работы из множества &amp;lt;tex&amp;gt; S_t \cup \{k_{i_t}\} &amp;lt;/tex&amp;gt; могут быть выполнены до их дедлайнов, что противоречит построению &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;. Следовательно, &amp;lt;tex&amp;gt; k_{i_t} &amp;lt; k &amp;lt;/tex&amp;gt;. Тогда аналогично предыдущему случаю получаем, что все работы из множества &amp;lt;tex&amp;gt; S_t \cup \{k\} &amp;lt;/tex&amp;gt; могут быть выполнены вовремя. Кроме того, все работы из &amp;lt;tex&amp;gt; \{ j \in S_t | j &amp;lt; k \} \cup \{k_{i_t}\} &amp;lt;/tex&amp;gt; так же могут быть выполнены вовремя, что следует из построения &amp;lt;tex&amp;gt; S_t &amp;lt;/tex&amp;gt;. Но тогда получается, что все работы и из множества &amp;lt;tex&amp;gt; S_t \cup \{k_{i_t}\} &amp;lt;/tex&amp;gt; так же могут быть выполнены вовремя, что опять приводит нас к противоречию с построением &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Время работы ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Время работы ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Время работы алгоритма зависит от того, насколько быстро мы будем добавлять и удалять работы из множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, а также как быстро мы будем искать работу с минимальным весом. Если в качестве множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; использовать структуру данных, умеющую выполнять данные операции за &amp;lt;tex&amp;gt; O(\log n) &amp;lt;/tex&amp;gt;, то время работы всего алгоритма будет составлять &amp;lt;tex&amp;gt; O(n\log n) &amp;lt;/tex&amp;gt;. Например, такими структурами данных являются [[Двоичная куча | двоичная куча]] и [[Красно-черное дерево | красно-черное дерево]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Время работы алгоритма зависит от того, насколько быстро мы будем добавлять и удалять работы из множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, а также как быстро мы будем искать работу с минимальным весом. Если в качестве множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; использовать структуру данных, умеющую выполнять данные операции за &amp;lt;tex&amp;gt; O(\log n) &amp;lt;/tex&amp;gt;, то время работы всего алгоритма будет составлять &amp;lt;tex&amp;gt; O(n\log n) &amp;lt;/tex&amp;gt;. Например, такими структурами данных являются [[Двоичная куча | двоичная куча]] и [[Красно-черное дерево | красно-черное дерево]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Cм. также ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[1ripipsumwu|&amp;lt;tex&amp;gt; 1 \mid r_i,p_i=p \mid \sum w_i U_i&amp;lt;/tex&amp;gt;]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[Ppi1sumwu|&amp;lt;tex&amp;gt;P \mid p_i=1 \mid \sum w_i U_i&amp;lt;/tex&amp;gt;]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[Fpij1sumwu|&amp;lt;tex&amp;gt;F \mid p_{ij} = 1 \mid \sum w_iU_i&amp;lt;/tex&amp;gt;]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Источники информации ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Источники информации ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Qtr</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54896&amp;oldid=prev</id>
		<title>91.122.160.191: /* Более простой случай */</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54896&amp;oldid=prev"/>
				<updated>2016-06-07T20:25:14Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Более простой случай&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 20:25, 7 июня 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l64&quot; &gt;Строка 64:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 64:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Время работы ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Время работы ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Время работы алгоритма зависит от того, насколько быстро мы будем добавлять и удалять работы из множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, а также как быстро мы будем искать работу с минимальным весом. Если в качестве множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; использовать структуру данных, умеющую выполнять данные операции за &amp;lt;tex&amp;gt; O(\log n) &amp;lt;/tex&amp;gt;, то время работы всего алгоритма будет составлять &amp;lt;tex&amp;gt; O(n\log n) &amp;lt;/tex&amp;gt;. Например, такими структурами данных являются [[Двоичная куча | двоичная куча]] и [[Красно-черное дерево | красно-черное дерево]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Время работы алгоритма зависит от того, насколько быстро мы будем добавлять и удалять работы из множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, а также как быстро мы будем искать работу с минимальным весом. Если в качестве множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; использовать структуру данных, умеющую выполнять данные операции за &amp;lt;tex&amp;gt; O(\log n) &amp;lt;/tex&amp;gt;, то время работы всего алгоритма будет составлять &amp;lt;tex&amp;gt; O(n\log n) &amp;lt;/tex&amp;gt;. Например, такими структурами данных являются [[Двоичная куча | двоичная куча]] и [[Красно-черное дерево | красно-черное дерево]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Более простой случай&amp;#160; ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Задачу &amp;lt;tex&amp;gt; 1 \mid p_{i}=1 \mid \sum\nolimits U_i&amp;lt;/tex&amp;gt; можно решить за &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;. Рассмотрим следующий алгоритм. Работы, значение &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; у которых больше либо равно &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, поместим в конец расписания. Для остальных работ заведём &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; множество &amp;lt;tex&amp;gt;S_{1}, S_{2} \dots S_{n-1}&amp;lt;/tex&amp;gt;. В множестве &amp;lt;tex&amp;gt;S_{i}&amp;lt;/tex&amp;gt; будем хранить номера работ, у которых &amp;lt;tex&amp;gt;d = i&amp;lt;/tex&amp;gt;. Далее для каждого множества будем по очереди добавлять работы, которые успеваем сделать, в расписание (как в строчках 3-6 предыдущего алгоритма). Те работы, которые не успеваем сделать, добавим в конец расписания. Всего будет выполнено O(n) операций и время работы алгоритма, таким образом, составляет &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Источники информации ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Источники информации ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>91.122.160.191</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54895&amp;oldid=prev</id>
		<title>91.122.160.191: /* Время работы */</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54895&amp;oldid=prev"/>
				<updated>2016-06-07T20:25:02Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Время работы&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 20:25, 7 июня 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l64&quot; &gt;Строка 64:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 64:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Время работы ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Время работы ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Время работы алгоритма зависит от того, насколько быстро мы будем добавлять и удалять работы из множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, а также как быстро мы будем искать работу с минимальным весом. Если в качестве множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; использовать структуру данных, умеющую выполнять данные операции за &amp;lt;tex&amp;gt; O(\log n) &amp;lt;/tex&amp;gt;, то время работы всего алгоритма будет составлять &amp;lt;tex&amp;gt; O(n\log n) &amp;lt;/tex&amp;gt;. Например, такими структурами данных являются [[Двоичная куча | двоичная куча]] и [[Красно-черное дерево | красно-черное дерево]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Время работы алгоритма зависит от того, насколько быстро мы будем добавлять и удалять работы из множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, а также как быстро мы будем искать работу с минимальным весом. Если в качестве множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; использовать структуру данных, умеющую выполнять данные операции за &amp;lt;tex&amp;gt; O(\log n) &amp;lt;/tex&amp;gt;, то время работы всего алгоритма будет составлять &amp;lt;tex&amp;gt; O(n\log n) &amp;lt;/tex&amp;gt;. Например, такими структурами данных являются [[Двоичная куча | двоичная куча]] и [[Красно-черное дерево | красно-черное дерево]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;в&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Более простой случай&amp;#160; ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Более простой случай&amp;#160; ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>91.122.160.191</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54894&amp;oldid=prev</id>
		<title>91.122.160.191: /* Источники информации */</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54894&amp;oldid=prev"/>
				<updated>2016-06-07T20:24:10Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Источники информации&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 20:24, 7 июня 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l72&quot; &gt;Строка 72:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 72:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Peter Brucker. «Scheduling Algorithms» {{---}} «Springer», 2006 г. {{---}} 96 стр. {{---}} ISBN 978-3-540-69515-8&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Peter Brucker. «Scheduling Algorithms» {{---}} «Springer», 2006 г. {{---}} 96 стр. {{---}} ISBN 978-3-540-69515-8&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория: &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Дискретная математика &lt;/del&gt;и &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;алгоритмы&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория: &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Алгоритмы &lt;/ins&gt;и &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;структуры данных&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория: Теория расписаний]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория: Теория расписаний]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>91.122.160.191</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54891&amp;oldid=prev</id>
		<title>91.122.160.191: /* Псевдокод */</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54891&amp;oldid=prev"/>
				<updated>2016-06-07T20:21:26Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Псевдокод&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 20:21, 7 июня 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot; &gt;Строка 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; {{---}} множество непросроченных работ, &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt; {{---}} текущее время.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; {{---}} множество непросроченных работ, &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt; {{---}} текущее время.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; '''Set''' p1sumwu('''int''' &amp;lt;tex&amp;gt;w[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;i&lt;/del&gt;]&amp;lt;/tex&amp;gt;, '''int''' &amp;lt;tex&amp;gt;d[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;i&lt;/del&gt;]&amp;lt;/tex&amp;gt;):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; '''Set'''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;'''int'''&amp;gt; &lt;/ins&gt;p1sumwu('''int''' &amp;lt;tex&amp;gt;w[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;n&lt;/ins&gt;]&amp;lt;/tex&amp;gt;, '''int''' &amp;lt;tex&amp;gt;d[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;n&lt;/ins&gt;]&amp;lt;/tex&amp;gt;):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  '''int''' &amp;lt;tex&amp;gt; t = 1&amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  '''int''' &amp;lt;tex&amp;gt; t = 1&amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  '''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;set&lt;/del&gt;''' &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  '''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Set&lt;/ins&gt;'''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;'''int'''&amp;gt; &lt;/ins&gt;&amp;lt;tex&amp;gt;s&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tex&amp;gt; = &amp;lt;tex&amp;gt;\{\}&lt;/ins&gt;&amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  '''for''' &amp;lt;tex&amp;gt; i = 1 &amp;lt;/tex&amp;gt; '''to''' &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160;  '''for''' &amp;lt;tex&amp;gt; i = 1 &amp;lt;/tex&amp;gt; '''to''' &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;lt;tex&amp;gt; s = s \cup \{i\} &amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;lt;tex&amp;gt; s = s \cup \{i\} &amp;lt;/tex&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>91.122.160.191</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54876&amp;oldid=prev</id>
		<title>91.122.160.191: Новая страница: «&lt;tex dpi = &quot;200&quot;&gt; 1 \mid p_{i}=1 \mid \sum\nolimits w_iU_i&lt;/tex&gt;  {{Задача |definition = Дано &lt;tex&gt; n &lt;/tex&gt; работ и &lt;tex&gt; 1 &lt;/tex&gt; станок. ...»</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Qtr/1&amp;diff=54876&amp;oldid=prev"/>
				<updated>2016-06-07T19:42:55Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «&amp;lt;tex dpi = &amp;quot;200&amp;quot;&amp;gt; 1 \mid p_{i}=1 \mid \sum\nolimits w_iU_i&amp;lt;/tex&amp;gt;  {{Задача |definition = Дано &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt; работ и &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt; станок. ...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;tex dpi = &amp;quot;200&amp;quot;&amp;gt; 1 \mid p_{i}=1 \mid \sum\nolimits w_iU_i&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Задача&lt;br /&gt;
|definition = Дано &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt; работ и &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt; станок. Для каждой работы известны её дедлайн &amp;lt;tex&amp;gt; d_{i} &amp;lt;/tex&amp;gt; и вес &amp;lt;tex&amp;gt; w_{i} &amp;lt;/tex&amp;gt;. Время выполнения всех работ &amp;lt;tex&amp;gt; p_i &amp;lt;/tex&amp;gt; равно &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;. Требуется минимизировать &amp;lt;tex&amp;gt;\sum w_{i} U_{i}&amp;lt;/tex&amp;gt;, то есть суммарный вес всех просроченных работ.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
Идея алгоритма состоит в том, чтобы на шаге &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; строить оптимальное расписание для первых &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; работ с наименьшими дедлайнами.&lt;br /&gt;
&lt;br /&gt;
Будем считать, что работы отсортированны в порядке неуменьшения их дедлайнов.&lt;br /&gt;
Пусть мы уже рассмотрели первые &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; работ, тогда множество &amp;lt;tex&amp;gt; S_{k} &amp;lt;/tex&amp;gt; содержит только те работы, которые мы успеваем выполнить в порядке неуменьшения их дедлайнов при оптимальном составлении расписания . Рассмотрим работу &amp;lt;tex&amp;gt; k + 1 &amp;lt;/tex&amp;gt;. Если мы успеваем выполнить данную работу до ее дедлайна, то добавим ее во множество &amp;lt;tex&amp;gt; S_{k} &amp;lt;/tex&amp;gt;, тем самым получив &amp;lt;tex&amp;gt; S_{k + 1} &amp;lt;/tex&amp;gt;. Если же &amp;lt;tex&amp;gt; k + 1 &amp;lt;/tex&amp;gt; работу выполнить до дедлайна мы не успеваем, то найдем в &amp;lt;tex&amp;gt; S_{k} &amp;lt;/tex&amp;gt; работу &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; с наименьшим весом &amp;lt;tex&amp;gt; w_{l} &amp;lt;/tex&amp;gt; и заменим ее на работу &amp;lt;tex&amp;gt; k + 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, рассмотрев все работы, мы получим &amp;lt;tex&amp;gt; S_{n} &amp;lt;/tex&amp;gt; {{---}} множество работ, которые мы успеваем выполнить до наступления их дедлайнов, причем вес просроченных работ будет наименьшим. От порядка выполнения просроченных работ ничего не зависит, поэтому расположить в расписании их можно произвольным образом.&lt;br /&gt;
&lt;br /&gt;
== Псевдокод ==&lt;br /&gt;
Предполагаем, что перед началом выполнения алгоритма выполняется, что &amp;lt;tex&amp;gt; 1 \leqslant d_{1} \leqslant d_{2} \leqslant ... \leqslant d_{n} &amp;lt;/tex&amp;gt;. Все работы, дедлайн которых равен &amp;lt;tex&amp;gt; 0 &amp;lt;/tex&amp;gt;, мы в любом случае выполнить без штрафа не успеем, поэтому их изначально можно отнести к просроченным.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; {{---}} множество непросроченных работ, &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt; {{---}} текущее время.&lt;br /&gt;
&lt;br /&gt;
 '''Set''' p1sumwu('''int''' &amp;lt;tex&amp;gt;w[i]&amp;lt;/tex&amp;gt;, '''int''' &amp;lt;tex&amp;gt;d[i]&amp;lt;/tex&amp;gt;):&lt;br /&gt;
   '''int''' &amp;lt;tex&amp;gt; t = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
   '''set''' &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;&lt;br /&gt;
   '''for''' &amp;lt;tex&amp;gt; i = 1 &amp;lt;/tex&amp;gt; '''to''' &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt;&lt;br /&gt;
      &amp;lt;tex&amp;gt; s = s \cup \{i\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''if''' &amp;lt;tex&amp;gt; d_{i}  \geqslant t &amp;lt;/tex&amp;gt;     &lt;br /&gt;
         &amp;lt;tex&amp;gt; t = t + 1 &amp;lt;/tex&amp;gt;&lt;br /&gt;
      '''else'''&lt;br /&gt;
         найти такое &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt; w_{k} = \min \{ w_{j} \mid j \in s\} &amp;lt;/tex&amp;gt;&lt;br /&gt;
         &amp;lt;tex&amp;gt; s = s \setminus \{k\} &amp;lt;/tex&amp;gt;    &lt;br /&gt;
   '''return''' &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Доказательство корректности ==&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=Алгоритм строит корректное расписание.&lt;br /&gt;
|proof=Если мы успеваем выполнить очередную работу, то, очевидно, от ее добавления, расписание не может стать некорректным. В противном случае мы пытаемся заменить одну работу из множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; на текущую. Но это так же не может сделать наше расписание некорректным. Это следует из того, что мы рассматриваем работы в порядке неуменьшениях их дедлайнов. Пусть мы заменяем работу &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; на работу &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt;. Но &amp;lt;tex&amp;gt; d_{k} \leqslant d_{i} &amp;lt;/tex&amp;gt;, следовательно, если мы успевали выполнить работу &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt;, то успеем выполнить и работу &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=Построенное данным алгоритмом расписание оптимально.&lt;br /&gt;
|proof=Пусть &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt; множество непросроченных работ в оптимальном расписании. Также пусть &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; {{---}} первая работа из множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, которая не входит в &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; {{---}} первая работа из &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt;, не содержащаяся в &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;. Мы можем предполагать существование этих работ, потому что &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt; не может содержать &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; как подмножество, иначе это противоречило бы построению &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;. С другой стороны, если &amp;lt;tex&amp;gt; S^* \subseteq S &amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; должно быть тоже оптимальным, и правильность алгоритма доказана.&lt;br /&gt;
&lt;br /&gt;
Для доказательства покажем, что мы можем заменить работу &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; на работу &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; в оптимальном расписании, не увеличивая минимизируемую функцию.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим два случая:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt; l &amp;lt; k &amp;lt;/tex&amp;gt;&lt;br /&gt;
Так как работа &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; не содержится в &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, то либо она не была добавлена при ее рассмотрении, либо была заменена работой, рассмотренной позднее. В любом случае это означает, что &amp;lt;tex&amp;gt; w_{k} \leqslant w_{l} &amp;lt;/tex&amp;gt;. Так же по определению &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; все работы &amp;lt;tex&amp;gt; i \in S^* : i &amp;lt; k &amp;lt;/tex&amp;gt; должны содержаться и в &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;. Но тогда заменив в оптимальном расписании &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt;, мы сохраним корректность расписания и не увеличим минимизируемую функцию.&lt;br /&gt;
*&amp;lt;tex&amp;gt; k &amp;lt; l &amp;lt;/tex&amp;gt;&lt;br /&gt;
Так как мы рассматриваем работы в порядке неубывания их дедлайнов, то, следовательно, &amp;lt;tex&amp;gt; d_{k} \leqslant d_{l} &amp;lt;/tex&amp;gt;, и замена работы &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; в оптимальном расписании &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt; не может сделать его некорректным. Тогда для доказательства нам осталось показать, что &amp;lt;tex&amp;gt; w_{k} \leqslant w_{l} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; k_{i_{0}} = k &amp;lt;/tex&amp;gt; {{---}} работа, замененная работой &amp;lt;tex&amp;gt; i_{0} &amp;lt;/tex&amp;gt; в процессе построения &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, и пусть &amp;lt;tex&amp;gt; k_{i_{1}}, ..., k_{i_{r}} &amp;lt;/tex&amp;gt; {{---}} последовательность работ, которые были исключены из &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; после замены &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt;, причем работа &amp;lt;tex&amp;gt; k_{i_{v}} &amp;lt;/tex&amp;gt; была заменена работой &amp;lt;tex&amp;gt; i_{v} &amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt; i_{0} &amp;lt; i_{1} &amp;lt; ... &amp;lt; i_{r} &amp;lt;/tex&amp;gt;. Будем говорить, что &amp;quot;работа &amp;lt;tex&amp;gt; i_{v} &amp;lt;/tex&amp;gt; подавляет &amp;lt;tex&amp;gt; i_{m} &amp;lt;/tex&amp;gt;&amp;quot;, где &amp;lt;tex&amp;gt; m &amp;lt; v &amp;lt;/tex&amp;gt;, если &amp;lt;tex&amp;gt; k_{i_{v}} \leqslant i_{m} &amp;lt;/tex&amp;gt;. В таком случае получаем, что &amp;lt;tex&amp;gt; w_{k_{i_{v}}} \geqslant w_{k_{i_{m}}}&amp;lt;/tex&amp;gt;, потому что в противном случае работа &amp;lt;tex&amp;gt; k_{i_{v}} &amp;lt;/tex&amp;gt; была бы исключена из &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; раньше чем &amp;lt;tex&amp;gt; k_{i_{m}} &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Если в последовательности &amp;lt;tex&amp;gt; i_{0} &amp;lt; i_{1} &amp;lt; ... &amp;lt; i_{r} &amp;lt;/tex&amp;gt; существует подпоследовательность &amp;lt;tex&amp;gt; j_{0} = i_{0} &amp;lt; j_{1} &amp;lt; ... &amp;lt; j_{s} &amp;lt;/tex&amp;gt; такая, что &amp;lt;tex&amp;gt; j_{v + 1} &amp;lt;/tex&amp;gt; подавляет &amp;lt;tex&amp;gt; j_{v} &amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt; v = 0,1, ..., s - 1 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; j_{s - 1} &amp;lt; l \leqslant j_{s} &amp;lt;/tex&amp;gt;, то получаем, что &amp;lt;tex&amp;gt; w_{l} \geqslant w_{k_{j_{s}}} \geqslant ... \geqslant w_{k_{j_{0}}} = w_{k} &amp;lt;/tex&amp;gt;, что доказывает оптимальность расписания &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Покажем, что отсутствие такой подпоследовательности приведет нас к противоречию, из чего будет следовать ее существование.&lt;br /&gt;
&lt;br /&gt;
Предположим, что такой подпоследовательности не существует. Тогда найдем наименьшее &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt; такое, что не существует работы &amp;lt;tex&amp;gt; i_{v} : v &amp;gt; t &amp;lt;/tex&amp;gt;, которая бы подавляла работу &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt;, и &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt; было бы меньше &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt;. По определению &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt; и из факта, что &amp;lt;tex&amp;gt; i_{t} &amp;lt; l &amp;lt;/tex&amp;gt;, получаем, что после добавления во множество &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; работы &amp;lt;tex&amp;gt; i_{t} &amp;lt;/tex&amp;gt;, ни одна из работ, рассмотренных ранее, не будет удалена из &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, а так же все эти работы содержатся и в оптимальном расписании &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt;, поскольку &amp;lt;tex&amp;gt; i_t &amp;lt; l &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; S_t &amp;lt;/tex&amp;gt; это множество &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; после замены работы &amp;lt;tex&amp;gt; k_{i_t} &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; i_t &amp;lt;/tex&amp;gt;. Если &amp;lt;tex&amp;gt; k_{i_t} &amp;gt; k &amp;lt;/tex&amp;gt;, то в оптимальном расписании &amp;lt;tex&amp;gt; S^* &amp;lt;/tex&amp;gt; мы можем заменить работу &amp;lt;tex&amp;gt; k &amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt; k_{i_t} &amp;lt;/tex&amp;gt;, поскольку &amp;lt;tex&amp;gt; d_{k_{i_t}} \geqslant d_k &amp;lt;/tex&amp;gt;. Но так как &amp;lt;tex&amp;gt; S_t \subset S^* &amp;lt;/tex&amp;gt;, то все работы из множества &amp;lt;tex&amp;gt; S_t \cup \{k_{i_t}\} &amp;lt;/tex&amp;gt; могут быть выполнены до их дедлайнов, что противоречит построению &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;. Следовательно, &amp;lt;tex&amp;gt; k_{i_t} &amp;lt; k &amp;lt;/tex&amp;gt;. Тогда аналогично предыдущему случаю получаем, что все работы из множества &amp;lt;tex&amp;gt; S_t \cup \{k\} &amp;lt;/tex&amp;gt; могут быть выполнены вовремя. Кроме того, все работы из &amp;lt;tex&amp;gt; \{ j \in S_t | j &amp;lt; k \} \cup \{k_{i_t}\} &amp;lt;/tex&amp;gt; так же могут быть выполнены вовремя, что следует из построения &amp;lt;tex&amp;gt; S_t &amp;lt;/tex&amp;gt;. Но тогда получается, что все работы и из множества &amp;lt;tex&amp;gt; S_t \cup \{k_{i_t}\} &amp;lt;/tex&amp;gt; так же могут быть выполнены вовремя, что опять приводит нас к противоречию с построением &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Время работы ==&lt;br /&gt;
Время работы алгоритма зависит от того, насколько быстро мы будем добавлять и удалять работы из множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt;, а также как быстро мы будем искать работу с минимальным весом. Если в качестве множества &amp;lt;tex&amp;gt; S &amp;lt;/tex&amp;gt; использовать структуру данных, умеющую выполнять данные операции за &amp;lt;tex&amp;gt; O(\log n) &amp;lt;/tex&amp;gt;, то время работы всего алгоритма будет составлять &amp;lt;tex&amp;gt; O(n\log n) &amp;lt;/tex&amp;gt;. Например, такими структурами данных являются [[Двоичная куча | двоичная куча]] и [[Красно-черное дерево | красно-черное дерево]].&lt;br /&gt;
в&lt;br /&gt;
&lt;br /&gt;
== Более простой случай  ==&lt;br /&gt;
Задачу &amp;lt;tex&amp;gt; 1 \mid p_{i}=1 \mid \sum\nolimits U_i&amp;lt;/tex&amp;gt; можно решить за &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;. Рассмотрим следующий алгоритм. Работы, значение &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; у которых больше либо равно &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;, поместим в конец расписания. Для остальных работ заведём &amp;lt;tex&amp;gt;n-1&amp;lt;/tex&amp;gt; множество &amp;lt;tex&amp;gt;S_{1}, S_{2} \dots S_{n-1}&amp;lt;/tex&amp;gt;. В множестве &amp;lt;tex&amp;gt;S_{i}&amp;lt;/tex&amp;gt; будем хранить номера работ, у которых &amp;lt;tex&amp;gt;d = i&amp;lt;/tex&amp;gt;. Далее для каждого множества будем по очереди добавлять работы, которые успеваем сделать, в расписание (как в строчках 3-6 предыдущего алгоритма). Те работы, которые не успеваем сделать, добавим в конец расписания. Всего будет выполнено O(n) операций и время работы алгоритма, таким образом, составляет &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* Peter Brucker. «Scheduling Algorithms» {{---}} «Springer», 2006 г. {{---}} 96 стр. {{---}} ISBN 978-3-540-69515-8&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Теория расписаний]]&lt;/div&gt;</summary>
		<author><name>91.122.160.191</name></author>	</entry>

	</feed>