<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=217.66.158.63&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=217.66.158.63&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/217.66.158.63"/>
		<updated>2026-05-19T18:00:44Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=1sumu&amp;diff=53851</id>
		<title>1sumu</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=1sumu&amp;diff=53851"/>
				<updated>2016-05-13T12:51:22Z</updated>
		
		<summary type="html">&lt;p&gt;217.66.158.63: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Постановка задачи==&lt;br /&gt;
Дан один станок и &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; работ, для которых заданы их времена выполнения на этом станке &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt; и дедлайны &amp;lt;tex&amp;gt;d_i&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;S&amp;lt;/tex&amp;gt;, упорядоченных по неубыванию дедлайнов.&lt;br /&gt;
Будем добавлять в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; работы в порядке неубывания значений &amp;lt;tex&amp;gt;d_j&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;d_1 \leqslant d_2 \leqslant \dots \leqslant d_n&amp;lt;/tex&amp;gt;;&lt;br /&gt;
    &amp;lt;tex&amp;gt;S \leftarrow \varnothing&amp;lt;/tex&amp;gt;;&lt;br /&gt;
    &amp;lt;tex&amp;gt;time \leftarrow 0&amp;lt;/tex&amp;gt;;&lt;br /&gt;
    &amp;lt;tex&amp;gt;FOR&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;i := 1\dots n&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;DO&amp;lt;/tex&amp;gt;&lt;br /&gt;
        &amp;lt;tex&amp;gt;S \leftarrow S \cup \{ i \}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
        &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt;;&lt;br /&gt;
        &amp;lt;tex&amp;gt;IF&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;t &amp;gt; d_i&amp;lt;/tex&amp;gt;&lt;br /&gt;
            находим в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; работу &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; с наибольшим &amp;lt;tex&amp;gt;p_j&amp;lt;/tex&amp;gt;;&lt;br /&gt;
            &amp;lt;tex&amp;gt;S = S \setminus\{j\}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
            &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;-=&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;p_j&amp;lt;/tex&amp;gt;;&lt;br /&gt;
Алгоритм будет работать за &amp;lt;tex&amp;gt;O(n \log n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Этот алгоритм строит оптимальное расписание.&lt;br /&gt;
|proof=&lt;br /&gt;
Разделим множество работ &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; на множество тех, которые успеют выполниться - &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и которые не успеют - &amp;lt;tex&amp;gt;F&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; - первая работа, которая была удалена из &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Докажем, что существует оптимальное расписание &amp;lt;tex&amp;gt;P = (S, T)&amp;lt;/tex&amp;gt;, в котором &amp;lt;tex&amp;gt;j \in F&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;p_j = \max\limits_{i = 1 \dots k} p_i&amp;lt;/tex&amp;gt;. При этом в последовательности работ &amp;lt;tex&amp;gt;1, 2, \dots, j-1 j+1, dots, k&amp;lt;/tex&amp;gt; не будет ни одной невыполненной работы, поскольку в последовательности &amp;lt;tex&amp;gt;1, 2, \dots, k-1&amp;lt;/tex&amp;gt; все работы выполняются вовремя и &amp;lt;tex&amp;gt;p_k \leqslant p_j&amp;lt;/tex&amp;gt;. Заменим &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; и отсортируем все работы. &lt;br /&gt;
Теперь рассмотрим оптимальное расписание &amp;lt;tex&amp;gt;P' = (S', F')&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \in S'&amp;lt;/tex&amp;gt;. В нём существует последовательность &amp;lt;tex&amp;gt;\pi&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;\pi(1), \dots, \pi(m), \dots, \pi(r), \pi(r+1), \dots, \pi(n)&amp;lt;/tex&amp;gt;, такая, что&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;F' = \{\pi(r+1), \dots, \pi(n)\}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;d_{\pi(1)} \leqslant \dots \leqslant d_{\pi(r)}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\} \subseteq \{1, \dots, k\}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;\{\pi(m+1), \dots, \pi(r)\} \subseteq \{k+1, \dots, n\}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;j \in \{\pi(1), \dots, \pi(m)\}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Такое &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; всегда найдётся, т.к. &amp;lt;tex&amp;gt;d_1 \leqslant d_2 \leqslant \dots \leqslant d_n&amp;lt;/tex&amp;gt;, а последнее будет следовать из того, что &amp;lt;tex&amp;gt;j \in S' \cap \{1, \dots, k\}&amp;lt;/tex&amp;gt;. Из того, что &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\} \subseteq S'&amp;lt;/tex&amp;gt; следует, что выполнятся все работы из &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\}&amp;lt;/tex&amp;gt;. С другой стороны, при любом расписании не будет выполнена какая-то работа из &amp;lt;tex&amp;gt;\{1, \dots, k\}&amp;lt;/tex&amp;gt;. Поэтому &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\} \subset \{1, \dots, k\}&amp;lt;/tex&amp;gt;, при этом существует работа &amp;lt;tex&amp;gt;h \notin \{\pi(1), \dots, \pi(m)\}&amp;lt;/tex&amp;gt;. Удалим работу &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\}&amp;lt;/tex&amp;gt; и заменим на &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;. Если отсортируем получившееся множество, то все работы в нём выполнятся, т.к. &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\} \cup \{h\} \cap \{j\} \subseteq \{1, \dots, k\} \setminus \{j\}&amp;lt;/tex&amp;gt;, а оно обладает таким свойством. Если добавим работы &amp;lt;tex&amp;gt;\pi(m+1), \dots, \pi(r)&amp;lt;/tex&amp;gt; к множеству &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\} \cup \{h\} \cap \{j\}&amp;lt;/tex&amp;gt; и отсортируем его по неубыванию дедлайнов, то все работы в нём выполнятся, т.к. из &amp;lt;tex&amp;gt;p_h \leqslant p_j&amp;lt;/tex&amp;gt; следует, что &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sum_{i=1}^{m} p_{\pi(i)} - p_j + p_h \leqslant \sum_{i=1}^{m} p_{\pi(i)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, мы получили оптимальное расписание &amp;lt;tex&amp;gt;P = (S, F)&amp;lt;/tex&amp;gt;, в котором &amp;lt;tex&amp;gt;j \in F&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Теперь докажем теорему индукцией по числу работ. Очевидно, при &amp;lt;tex&amp;gt;n = 1&amp;lt;/tex&amp;gt; она выполняется. Предположим, что алгоритм верен для &amp;lt;tex&amp;gt;n - 1&amp;lt;/tex&amp;gt; работы. Пусть &amp;lt;tex&amp;gt;P = (S, T)&amp;lt;/tex&amp;gt; - расписание, построенное алгоритмом, а &amp;lt;tex&amp;gt;P' = (S', T')&amp;lt;/tex&amp;gt; - оптимальное расписание с &amp;lt;tex&amp;gt;j \in F'&amp;lt;/tex&amp;gt;. Тогда, по отимальности, &amp;lt;tex&amp;gt;|S| \leqslant |S'|&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если применить алгоритм ко множеству &amp;lt;tex&amp;gt;\{1, \dots, j-1, j+1, \dots, n\}&amp;lt;/tex&amp;gt;, то получим оптимальное расписание для &amp;lt;tex&amp;gt;(S, F\setminus \{j\})&amp;lt;/tex&amp;gt;. Т.к. для задачи с меньшим числом станков им будет являться &amp;lt;tex&amp;gt;(S', F' \setminus \{j\})&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;|S'| \leqslant |S|&amp;lt;/tex&amp;gt;, и, следовательно, &amp;lt;tex&amp;gt;|S| = |S'|&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; является оптимальным расписанием.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* Peter Brucker. «Scheduling Algorithms» {{---}} «Springer», 2006 г. {{---}} 86 стр. {{---}} ISBN 978-3-540-69515-8&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Теория расписаний]]&lt;/div&gt;</summary>
		<author><name>217.66.158.63</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=1sumu&amp;diff=53850</id>
		<title>1sumu</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=1sumu&amp;diff=53850"/>
				<updated>2016-05-13T12:49:54Z</updated>
		
		<summary type="html">&lt;p&gt;217.66.158.63: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Постановка задачи==&lt;br /&gt;
Дан один станок и &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; работ, для которых заданы их времена выполнения на этом станке &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt; и дедлайны &amp;lt;tex&amp;gt;d_i&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;S&amp;lt;/tex&amp;gt;, упорядоченных по неубыванию дедлайнов.&lt;br /&gt;
Будем добавлять в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; работы в порядке неубывания значений &amp;lt;tex&amp;gt;d_j&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;d_1 \leqslant d_2 \leqslant \dots \leqslant d_n&amp;lt;/tex&amp;gt;;&lt;br /&gt;
    &amp;lt;tex&amp;gt;S \leftarrow \varnothing&amp;lt;/tex&amp;gt;;&lt;br /&gt;
    &amp;lt;tex&amp;gt;time \leftarrow 0&amp;lt;/tex&amp;gt;;&lt;br /&gt;
    &amp;lt;tex&amp;gt;FOR&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;i := 1\dots n&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;DO&amp;lt;/tex&amp;gt;&lt;br /&gt;
        &amp;lt;tex&amp;gt;S \leftarrow S \cup \{ i \}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
        &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;+=&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;p_i&amp;lt;/tex&amp;gt;;&lt;br /&gt;
        &amp;lt;tex&amp;gt;IF&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;t &amp;gt; d_i&amp;lt;/tex&amp;gt;&lt;br /&gt;
            находим в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; работу &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; с наибольшим &amp;lt;tex&amp;gt;p_j&amp;lt;/tex&amp;gt;;&lt;br /&gt;
            &amp;lt;tex&amp;gt;S = S \setminus\{j\}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
            &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;-=&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;p_j&amp;lt;/tex&amp;gt;;&lt;br /&gt;
Алгоритм будет работать за &amp;lt;tex&amp;gt;O(n \log n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Этот алгоритм строит оптимальное расписание.&lt;br /&gt;
|proof=&lt;br /&gt;
Разделим множество работ &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; на множество тех, которые успеют выполниться - &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и которые не успеют - &amp;lt;tex&amp;gt;F&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; - первая работа, которая была удалена из &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Докажем, что существует оптимальное расписание &amp;lt;tex&amp;gt;P = (S, T)&amp;lt;/tex&amp;gt;, в котором &amp;lt;tex&amp;gt;j \in F&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;p_j = \max\limits_{i = 1 \dots k} p_i&amp;lt;/tex&amp;gt;. При этом в последовательности работ &amp;lt;tex&amp;gt;1, 2, \dots, j-1 j+1, dots, k&amp;lt;/tex&amp;gt; не будет ни одной невыполненной работы, поскольку в последовательности &amp;lt;tex&amp;gt;1, 2, \dots, k-1&amp;lt;/tex&amp;gt; все работы выполняются вовремя и &amp;lt;tex&amp;gt;p_k \leqslant p_j&amp;lt;/tex&amp;gt;. Заменим &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; и отсортируем все работы. &lt;br /&gt;
Теперь рассмотрим оптимальное расписание &amp;lt;tex&amp;gt;P' = (S', F')&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;j \in S'&amp;lt;/tex&amp;gt;. В нём существует последовательность &amp;lt;tex&amp;gt;\pi&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;\pi(1), \dots, \pi(m), \dots, \pi(r), \pi(r+1), \dots, \pi(n)&amp;lt;/tex&amp;gt;, такая, что&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;F' = \{\pi(r+1), \dots, \pi(n)\}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;d_{\pi(1)} \leqslant \dots \leqslant d_{\pi(r)}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\} \subseteq \{1, \dots, k\}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;\{\pi(m+1), \dots, \pi(r)\} \subseteq \{k+1, \dots, n\}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tex&amp;gt;j \in \{\pi(1), \dots, \pi(m)\}&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Такое &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; всегда найдётся, т.к. &amp;lt;tex&amp;gt;d_1 \leqslant d_2 \leqslant \dots \leqslant d_n&amp;lt;/tex&amp;gt;, а последнее будет следовать из того, что &amp;lt;tex&amp;gt;j \in S' \cap \{1, \dots, k\}&amp;lt;/tex&amp;gt;. Из того, что &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\} \subseteq S'&amp;lt;/tex&amp;gt; следует, что выполнятся все работы из &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\}&amp;lt;/tex&amp;gt;. С другой стороны, при любом расписании не будет выполнена какая-то работа из &amp;lt;tex&amp;gt;\{1, \dots, k\}&amp;lt;/tex&amp;gt;. Поэтому &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\} \subset \{1, \dots, k\}&amp;lt;/tex&amp;gt;, при этом существует работа &amp;lt;tex&amp;gt;h \notin \{\pi(1), \dots, \pi(m)\}&amp;lt;/tex&amp;gt;. Удалим работу &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\}&amp;lt;/tex&amp;gt; и заменим на &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;. Если отсортируем получившееся множество, то все работы в нём выполнятся, т.к. &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\} \cup \{h\} \cap \{j\} \subseteq \{1, \dots, k\} \setminus \{j\}&amp;lt;/tex&amp;gt;, а оно обладает таким свойством. Если добавим работы &amp;lt;tex&amp;gt;\pi(m+1), \dots, \pi(r)&amp;lt;/tex&amp;gt; к множеству &amp;lt;tex&amp;gt;\{\pi(1), \dots, \pi(m)\} \cup \{h\} \cap \{j\}&amp;lt;/tex&amp;gt; и отсортируем его по неубыванию дедлайнов, то все работы в нём выполнятся, т.к. из &amp;lt;tex&amp;gt;p_h \leqslant p_j&amp;lt;/tex&amp;gt; следует, что &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\sum_{i=1}^{m} p_{\pi(i)} - p_j + p_h \leqslant \sum_{i=1}^{m} p_{\pi(i)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, мы получили оптимальное расписание &amp;lt;tex&amp;gt;P = (S, F)&amp;lt;/tex&amp;gt;, в котором &amp;lt;tex&amp;gt;j \in F&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Теперь докажем теорему индукцией по числу работ. Очевидно, при &amp;lt;tex&amp;gt;n = 1&amp;lt;/tex&amp;gt; она выполняется. Предположим, что алгоритм верен для &amp;lt;tex&amp;gt;n - 1&amp;lt;/tex&amp;gt; работы. Пусть &amp;lt;tex&amp;gt;P = (S, T)&amp;lt;/tex&amp;gt; - расписание, построенное алгоритмом, а &amp;lt;tex&amp;gt;P' = (S', T')&amp;lt;/tex&amp;gt; - оптимальное расписание с &amp;lt;tex&amp;gt;j \in F'&amp;lt;/tex&amp;gt;. Тогда, по отимальности, &amp;lt;tex&amp;gt;|S| \leqslant |S'|&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если применить алгоритм ко множеству &amp;lt;tex&amp;gt;\{1, \dots, j-1, j+1, \dots, n\}&amp;lt;/tex&amp;gt;, то получим оптимальное расписание для &amp;lt;tex&amp;gt;(S, F\setminus \{j\})&amp;lt;/tex&amp;gt;. Т.к. для задачи с меньшим числом станков им будет являться &amp;lt;tex&amp;gt;(S', F' \setminus \{j\})&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;|S'| \leqslant |S|&amp;lt;/tex&amp;gt;, и, следовательно, &amp;lt;tex&amp;gt;|S| = |S'|&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;P&amp;lt;/tex&amp;gt; является оптимальным расписанием.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Источники информации==&lt;br /&gt;
* Peter Brucker. «Scheduling Algorithms» {{---}} «Springer», 2006 г. {{---}} 86 стр. {{---}} ISBN 978-3-540-69515-8&lt;/div&gt;</summary>
		<author><name>217.66.158.63</name></author>	</entry>

	</feed>