4. Конвейер
Общие сведения о конвейере
- Это один из главных компонентов успеха на соревновании
- Позволяет организовать параллельное решение задач
Конвейер организуется ситуативно и зависит от многих факторов:
- Количества задач на соревновании
- Максимальных возможностей команды
- Разности уровней подготовки участников команды
- Специализации каждого участника
- Сложившейся ситуации
Что даёт правильная организация конвейера:
- Минимальный простой компьютера
- Эффективное распределение времени
- Параллельное решение задач
Как организовать конвейер
В зависимости от количества задач на соревновании
Чтобы понять идею организации конвейера, необходимо ответить на вопрос:
Как максимально эффективно распределить время для решения N задач возрастающей сложности, имея трёх человек в команде?
Также предполагается, что каждый участник должен самостоятельно решать от до задач. Например, если на соревновании даны задач, то каждый участник должен решить самостоятельно по задачи, чтобы организовать параллельную работу конвейера. Оставшиеся две задачи будут решаться сообща, т.е. 2-3 человека будут думать над решением одной задачи.
Сначала рассмотрим ответ на этот вопрос для .
Очевидно, что самый эффективный способ – решение тремя людьми одной задачи.
В данной ситуации:
- Вся команда ищет решение одной задачи
- После найденного решения один участник программирует его
- Вся команда тестирует написанную программу
| Этап | Участник 1 | Участник 2 | Участник 3 |
|---|---|---|---|
| 1 | Задача 1 | ||
Для :
Т.к. задачи возрастают по сложности, то простую задачу следует решать одному человеку, а сложную двум (схема ).
В данной ситуации:
- Участник 1 решает Задачу 1
- В то же время Участник 2 и Участник 3 вместе решают Задачу 2
- Первый, кто получил решение своей задачи, программирует его, тестирует и отправляет на проверку
- Если решение неверное, то ищет ошибки в нём
- Первый, кто получил AC на своей задаче, начинает помогать в решении второй задачи
| Участник 1 | Участник 2 | Участник 3 |
|---|---|---|
| Задача 1 | Задача 2 | |
Для :
В данном случае может быть два варианта организации конвейера:
- Параллельно 3 задачи за 1 этап, если каждый участник способен решить 1 задачу самостоятельно
В данной ситуации:
- Каждый участник решает свою задачу
- Первый, кто получил решение своей задачи, программирует его, тестирует и отправляет на проверку
- Если решение неверное, то ищет ошибки в нём
- Компьютер освобождается
- Первый, кто получил AC на своей задаче, начинает помогать в решении более сложной задачи
- Или по ситуации, в зависимости от того, в какой из оставшихся задач больше трудностей
- Второй получивший решение своей задачи программирует его, тестирует и отправляет на проверку
- Если решение неверное, то ищет ошибки в нём
- Компьютер освобождается
- Если обе задачи сданы, то освободившиеся участники помогают с решением последней задачи
| Этап | Участник 1 | Участник 2 | Участник 3 |
|---|---|---|---|
| 1 | Задача 1 | Задача 2 | Задача 3 |
- Первые две аналогично , а третью вместе после решения первых двух за 2 этапа
В данной ситуации:
- К решению Задачи 3 приступают освободившиеся участники только после получения AC для одной из первых двух задач
- Далее должна быть сдана вторая по сложности задачи
- А параллельно ей уже решается Задача 3
- После получения AC на первых двух задачах вся команда решает Задачу 3
| Этап | Участник 1 | Участник 2 | Участник 3 |
|---|---|---|---|
| 1 | Задача 1 | Задача 2 | |
| 2 | Задача 3 | ||
Для :
В данной ситуации:
- Решение первых трёх задач происходит аналогично конвейеру для за один этап
- Первый участник, получивший AC на своей задаче, приступает к решению Задачи 4
- Следующий участник, получивший AC на своей задаче, начинает помогать в решении оставшейся на первом этапе задачи
- Если это не нужно, то переходит на Задачу 4
- Последний участник получает AC на своей задаче и приступает к решению Задачи 4
- Вся команда решает одну задачу, как для
| Этап | Участник 1 | Участник 2 | Участник 3 |
|---|---|---|---|
| 1 | Задача 1 | Задача 2 | Задача 3 |
| 2 | Задача 4 | ||
Для :
В данной ситуации:
- Решение первых трёх задач происходит аналогично конвейеру для за один этап
- Первый участник, получивший AC на своей задаче, приступает к решению Задачи 4
- Следующий участник, получивший AC на своей задаче, приступает к решению Задачи 5
- Последний участник получает AC на своей задаче и начинает помогать в решении Задачи 5
- Команда решает 2 задачи, как для
| Этап | Участник 1 | Участник 2 | Участник 3 |
|---|---|---|---|
| 1 | Задача 1 | Задача 2 | Задача 3 |
| 2 | Задача 4 | Задача 5 | |
Для :
В 3 этапа:
В данной ситуации:
- Организация конвейера 1-го и 2-го этапов аналогична случаю для
- Переход с 2-го на 3-ий этап осуществляется как для в 2 этапа
| Этап | Участник 1 | Участник 2 | Участник 3 |
|---|---|---|---|
| 1 | Задача 1 | Задача 2 | Задача 3 |
| 2 | Задача 4 | Задача 5 | |
| 3 | Задача 6 | ||
В 2 этапа:
В данной ситуации:
- Участник при решении своей задачи на 1-ом этапе переход к решению задачи на 2-ом этапе
- Когда участник уже самостоятельно решил 2 задачи, он начинает помогать другим участникам команды
- Если к этому моменту у какого-либо участника не завершён 1-ый этап, то необходимо помочь ему
- Иначе по ситуации
| Этап | Участник 1 | Участник 2 | Участник 3 |
|---|---|---|---|
| 1 | Задача 1 | Задача 2 | Задача 3 |
| 2 | Задача 4 | Задача 5 | Задача 6 |
Далее аналогично.
Общий вид организации конвейера для N задач
Для или :
| Участник 1 | Участник 2 | Участник 3 |
|---|---|---|
| Задача 1 | Задача 2 | Задача 3 |
| ... | ... | ... |
| Задача N – 2 | Задача N – 1 | |
| Задача N | ||
или
| Участник 1 | Участник 2 | Участник 3 |
|---|---|---|
| Задача 1 | Задача 2 | Задача 3 |
| ... | ... | ... |
| Задача N – 2 | Задача N – 1 | Задача N |
Для :
| Участник 1 | Участник 2 | Участник 3 |
|---|---|---|
| Задача 1 | Задача 2 | Задача 3 |
| ... | ... | ... |
| Задача N – 1 | Задача N | |
В зависимости от максимальных возможностей команды
Если на соревновании дано задач, а команда на соревнованиях аналогичной сложности в среднем решает задач, то необходимо организовать конвейер для решения задач. Далее действовать по ситуации, например решать задачи втроём:
| Участник 1 | Участник 2 | Участник 3 |
|---|---|---|
| Задача M + 1 | ||
| Задача M + 2 | ||
| ... | ||
В зависимости от разности уровней подготовки участников команды
Если в команде существует явная градация по уровню подготовки между участниками, то следует менять распределение задач в пределах одного этапа.
Если , где значит, что более подготовлен, чем , то общий вид конвейера для задач будет выглядить иначе:
Для или :
| Участник 1 | Участник 2 | Участник 3 |
|---|---|---|
| Задача 3 | Задача 2 | Задача 1 |
| Задача 6 | Задача 5 | Задача 4 |
| ... | ... | ... |
| Задача N – 2 | Задача N – 1 | |
| Задача N | ||
или
| Участник 1 | Участник 2 | Участник 3 |
|---|---|---|
| Задача 3 | Задача 2 | Задача 1 |
| ... | ... | ... |
| Задача N | Задача N – 1 | Задача N - 2 |
Для :
| Участник 1 | Участник 2 | Участник 3 |
|---|---|---|
| Задача 3 | Задача 2 | Задача 1 |
| Задача 6 | Задача 5 | Задача 4 |
| ... | ... | ... |
| Задача N – 1 | Задача N | |
Организация конвейера в зависимости от специализации каждого участника
Специализация по роли в команде
Если в команде есть сильный [[3. Команда на соревновании|программист]], то реализацией решений задач занимается он. Соответственно, необходимо организовать для него поток решений, которые ему нужно будет запрограммировать. Главная задача других участников команды – находить решение новой задачи, пока программист реализует решения предыдущих задач.
Специализация по классу задач
Если участник команды имеет больше опыта в решении задач на данную тему, то стоит передать решение такой задачи ему.
В зависимости от сложившейся ситуации
Могут произойти ситуации, нарушающие работу конвейера. Например, неспособность участника продолжить участие в соревновании или долгое решение одной задачи.
Нарушение работы конвейера – это гарантированный провал на соревновании.
Соответственно, необходимо приложить максимальные усилия, чтобы этого не допустить.
Ситуации из примера схожи по концепции их решения: необходимо оставить участника с его проблемой и организовывать конвейер для двух человек.