Содержание
Введение
1. Постановка задачи
2. Математические и алгоритмические основы решения задачи
2.1 Круговая система
2.2 Плей-офф
3. Функциональные модели и блок-схемы решения задачи
4. Программная реализация решения задачи
5. Пример выполнения программы
Заключение
Список использованных источников и литературы
Введение
Специально организованные спортивные соревнования направлены на максимальную реализацию духовных и физических возможностей человека, группы людей, команды, демонстрацию и сопоставление уровня подготовленности, достижение высших результатов или победы в регламентированных специальными правилами, в условиях неантагонистического соперничества, специфического для вида спорта.
Спортивные соревнования, являясь сущностью спорта, определяют цели и направленность развития и воспитания спортсмена для результативной деятельности.
Спортивные соревнования являются своеобразной моделью человеческих отношений, реально существующих в обществе: борьбы, победы, поражения, взаимовыручки, направленности к постоянному совершенствованию и достижению высшего результата в деятельности, удовлетворения творческих и престижных целей и др. Соревнования в спорте опираются в своей основе на нравственные правила общества, поэтому социальная среда, общественный строй зачастую оказывают определяющее влияние на характер соревновательных ориентации и установок спортсменов.
Соревнования в современном спорте являются не только способом выявления победителя, но и важнейшим средством подготовки спортсмена, совершенствования спортивного мастерства, контроля за уровнем подготовленности и т.д. Это объясняется тем особым эмоциональным и физиологическим фоном, который «усиливает воздействие физических упражнений и может способствовать максимальному проявлению функциональных возможностей организмам. Многими исследованиями показано, что практически во всех случаях нагрузки в ходе соревнования превосходят аналогичные нагрузки, выполняемые в тренировке и даже в условиях, моделирующих соревнования.
Содействуя развитию физической подготовленности, совершенствованию психических и двигательных функций, росту спортивного мастерства, нравственному воспитанию спортсмена, соревнования содействуют всестороннему и гармоничному воспитанию личности спортсмена. Стимулируя активность занятий спортом, направленность к высшим достижениям, соревнования являются способом воздействия общества на формирование человека.
Целью данной курсовой работы является ЛИСП-реализация составления расписания встреч участников соревнования.
1. Постановка задачи
Разработать и отладить программу на языке Лисп по составлению расписания встреч участников соревнований, используя круговую и олимпийскую систему проведения соревнований.
Входные данные: список команд, участвующих в соревнованиях.
Выходные данные: расписание встреч команд, учитывая систему проведения соревнования.
Пример 1.
Плей-офф в Евролиге 2006-2007 по баскетболу
¼ Финала
½ Финала
Финал
D1
Таугрес
2
E2
Олимпиакос
/>
D1
Таугрес
53
/>
F1
Панатинаикос
/>67
F1
Панатинаикос
2
H2
Динамо М
F1
Панатинаикос
93
/>
E1
ЦСКА
91
E1
ЦСКА
/>2
D2
Маккаби Т-А
1
E1
ЦСКА
62
/>
H1
Уникаха
50
H1
Уникаха
2
F2
Барселона
1
Пример 2.
В данном примере (Таблица 1) команды сыграли 1 круговой турнир (6 встреч), за победу начисляется 3 очка, за ничью 1 очко
Таблица 1 — Пример круговой системы
Команда 1--PAGE_BREAK--
Команда 2
Команда 3
Команда 4
Очков
1
Команда 1
5: 1
2: 1
0: 0
7
2
Команда 2
3: 0
2: 1
6
3
Команда 3
2: 0
3
4
Команда 4
1
2. Математические и алгоритмические основы решения задачи
2.1 Круговая система
Круговая система — в спортивных соревнованиях система розыгрыша, при которой каждый участник турнира играет с каждым в ходе тура или раунда. Популярна в игровых видах спорта (футбол, волейбол, баскетбол), особенно в национальных чемпионатах и при отборочных турнирах к чемпионатам мира или континентов. Считается наиболее справедливой, но при этом требует наибольшего числа игр для распределения мест, по сравнению с другими турнирными системами.
Порядок встреч противников друг с другом при круговой системе не имеет большого значения. Но участники в паре очередного тура обычно определяются жребием.
Количество встреч при круговой системе определяется по формуле
/>,
где N количество команд (игроков).
Количество туров (при наличии технической возможности одновременного проведения достаточного числа игр) равно />для чётного числа участников и />для нечётного (в последнем случае каждый участник пропускает один тур, в котором ему не находится соперника).
По результатам каждой игры участнику начисляется определённое количество очков. Например, в шахматах традиционно начисляют 1 очко за выигрыш, 0 очков за проигрыш и 0,5 очка за ничью. Очки, набранные участниками в течение всего турнира, суммируются. Места распределяются по убыванию количества набранных очков.
Если двое или более участников набрали одинаковое количество очков, для распределения их мест применяются дополнительные критерии: коэффициент Бергера, результат личной встречи, уточнённый результат игр (например, в хоккее и футболе может применяться разница числа забитых и пропущенных голов — у кого она больше, тот получает более высокое место). Правила турнира определяют применяемые в нём дополнительные критерии распределения мест у участников с равным числом набранных очков. Если по всем критериям участники оказываются равными, правила могут предусматривать либо проведение между ними дополнительных встреч до определённого положительного результата, либо «разделение мест», когда равные участники считаются одновременно занявшими два или более мест в итоговой таблице.
Максимальная теоретически достижимая справедливость турнира: так как все сыграют со всеми, итоговый результат определяется соотношением сил всех пар соперников.
Справедливо определяются места, занятые всеми участниками турнира.
Даже слабейший участник всегда имеет шанс встретиться с сильнейшим.
Нет специальных условий по числу участников (в швейцарской системе число участников должно быть чётным, в олимпийской системе и Double Elimination — степенью двойки).
Система устойчива к выбыванию игроков: если кто-то выбыл из турнира после его начала, достаточно просто вычеркнуть его из турнирной таблицы и аннулировать результаты тех игр, которые он уже провёл; в итоге получится, как будто он вообще не участвовал. В прочих системах в подобных случаях части игроков приходится присуждать технические победы. Однако при аннулировании результатов прочие участники оказываются в неравных условиях: победившие выбывшего игрока лишаются очков, тогда как проигравшие ничего не теряют, а в некоторых случаях могут и улучшить дополнительные показатели. Поэтому в некоторых случаях при выбывании игрока результаты не аннулируются, а в оставшихся играх его соперникам засчитываются технические победы (но в этом случае преимущество получают те, кто не успел встретиться с выбывшим участником).
Необходимо большое количество встреч (максимальное среди всех игровых систем) и, соответственно, значительное количество времени для проведения турнира. Количество встреч растёт с ростом числа участников квадратично. Практическим пределом для круговой системы (в тех видах спорта, где количество встреч в один игровой день для одного участника составляет максимум одну-две) является 20-30 участников (для 30 участников требуется 29 туров, то есть почти месяц чистого времени при одной игре в день). Вследствие этого крупные турниры по круговой системе редки.
Если, начиная с некоторого тура один из игроков значительно оторвётся в очках от остальных, турнир приобретает предсказуемость и теряет остроту.
С точки зрения зрелищности (а значит, и источников финансирования) турнир проигрывает более динамичным схемам, если участники заметно различаются по силе. Значительная часть встреч проходит между соперниками явно несравнимой силы и оказывается предсказуемой.
Возникает проблема договорных матчей — близким по силам участникам бывает выгоднее договориться о ничьей, чем играть «на выигрыш», рискуя проиграть и потерять очки. Поэтому в тех видах спорта, где фиксируются ничьи, специальными приёмами приходится уменьшать заинтересованность в них участников.
Один из вариантов — запрет на ничьи (в случае ничьей в основной игре, в этом же туре играется дополнительная по особым правилам, не допускающим ничейного результата: в шахматах это может быть блиц-партия по схеме «6 минут белым, 5 минут чёрным, при ничьей чёрные объявляются победителем», в игровых видах спорта — игра «до первого мяча/шайбы» или серии пенальти до получения различного результата) или их ограничение (например, "Софийские правила" в шахматах). Возможно изменение условий начисления очков так, чтобы победа стоила намного больше ничьей (например, начисление 3 очков за победу, 1 за ничью и 0 за поражение), но такие системы должны быть хорошо согласованы, чтобы не вызвать нежелательных побочных эффектов.
При сравнимых силах игроков появляется проблема нетранзитивности: могут появиться замкнутые цепочки игроков, в которых каждый выиграл у следующего, а последний выиграл у первого, по кругу. В таких случаях при равном количестве набранных в турнире очков, не удаётся распределить места по результатам личной встречи (наиболее логичный вариант — если двое набрали равное число очков, из них сильнее тот, который победил другого) и приходится вводить дополнительные критерии, проводить дополнительные игры или делить места.
Круговая система широко применяется в национальных и международных соревнованиях по игровым видам спорта. Более того в национальных турнирах по игровым видам спорта, например по футболу или баскетболу часто проводятся двухкруговые турниры, где каждый с каждым играет сначала на своём и далее на чужом поле.
С целью более равномерной и справедливой нагрузки на команды часто практикуют чередование игр на своём и чужом поле.
2.2 Плей-офф
Плей-офф (англ. playoff) или олимпийская система — в спортивных соревнованиях — система розыгрыша, при которой участник выбывает из турнира после первого же проигрыша (по итогам одной игры или серии из нескольких игр между двумя командами). Обеспечивает выявление победителя за минимальное число туров и способствует напряжённой борьбе в турнире.
Плей-офф требует строго определённого количества участников, поэтому обычно (хотя и не всегда) отбор для попадания в плей-офф проходит в предварительном этапе, который во многих спортивных лигах называют «регулярным сезоном». В индивидуальных видах спорта, где практикуется присваивание игрокам личных рейтингов, возможен отбор в плей-офф нужного количества игроков с наибольшим на момент отбора рейтингом.
Количество участников розыгрыша плей-офф обязательно должно быть степенью двойки (2, 4, 8, 16, 32 и так далее). В случае другого числа команд проводятся один или несколько предварительных кругов розыгрыша, в результате которых общее число команд сокращается до ближайшей степени двойки.
Двоичный логарифм числа участников определяет число кругов розыгрыша (туров): для 2 участников — один, для 4 — два, для восьми — три, для 16 — четыре. Общее число игр на единицу меньше числа участников. Круги розыгрыша обычно называются по количеству пар участников: для 2 участников — «финал» (так как он определяет победителя), для 4 — «полуфинал», для 8 — «четвертьфинал», для 16 — «одна восьмая финала», для 32 — «одна шестнадцатая финала» и так далее.
В каждом круге из участников составляются пары, играющие между собой (это может быть одна игра, или матч из нескольких игр, в котором побеждает набравший больше очков; принципиально важно, что результат тура всегда определённый — ничьих быть не может).
Из каждой пары в следующий круг выходит победитель, а побеждённый выбывает из турнира.
Участник, выигравший финальный круг, становится победителем, его последний соперник получает второе место. Если регламент турнира требует присвоения и третьего места, то проводится дополнительный матч за него между двумя участниками, проигравшими в полуфинале.
Принципы отбора пар на первый этап могут быть разные: чаще всего применяется жеребьёвка, хотя возможен отбор по рейтингу. Пары на втором и следующих этапах могут составляться либо по тем же правилам, что и на первом (на каждом этапе проводится новая жеребьёвка пар или отбор по рейтингу), либо по принципу «жёсткой сетки» — сетка турнира готовится заранее, в ней жёстко задаётся, как будут составляться пары из победителей каждого этапа, и всё распределение пар однозначно определяется порядком заполнения сетки на первом этапе.
К достоинствам плей-офф можно отнести минимальное количество игр, по сравнению с другими вариантами турниров, а также «бескомпромиссность» — в нём нет ни возможности, ни смысла в договорных ничьих. Плей-офф нацелен на максимально быстрое выявление сильнейшего и обеспечивает справедливое (если считать силу участников постоянной и не зависящей от того, кто с кем играет) присвоение первого места — его занимает тот, кто никому не проиграл, в то время как все прочие участники турнира кому-то проигрывают.
Неудобство плей-офф — в жёстких требованиях к количеству участников. Если это количество не соответствует норме, то единственный выход — по жребию выдать части участников технические победы или технические поражения в первом круге, что ещё больше увеличивает влияние случайного фактора на исход турнира. Единственная альтернатива — предварять турнир плей-офф серией предварительных игр за выход в основной турнир.
Плей-офф совершенно не подходит для турниров, где важно обеспечить справедливое распределение всех мест, а не только первого-третьего. Во-первых, в плей-офф на распределение мест, кроме первого (в особенности — последних), чрезвычайно сильно влияет порядок выбора пар. В случае жеребьёвки последние места распределяются практически случайно: слабый участник, которому жребий даёт сравнимых по силе противников, легко может подняться выше сильного, которому в первом же круге достался ещё более сильный соперник. продолжение
--PAGE_BREAK--
Попытка заменить жребий на какую-то осмысленную систему подбора пар по рейтингам делает турнир предсказуемым. Есть два варианта такого подбора: либо «сильный против слабого» — в каждом круге участнику с высоким рейтингом достаётся противник с низким (конкретных алгоритмов подбора может быть несколько), либо «равный с равным» — сильнейшему дают в пару второго, третьему — четвёртого и так далее. В первом случае бо́льшая часть встреч оказывается предсказуемой, а поэтому неинтересной, во втором — половина сильнейших отсеивается на первых этапах и предсказуемым оказывается финал. Поэтому всегда используют первый вариант, чтобы зритель в финале увидел настоящую игру сильнейших, а не серый финал, никому неинтересных команд.
Кроме того, в чистом плей-офф места, кроме первого и второго, вообще не могут быть присвоены (у всех по одному поражению), и конкретное место заменяется понятием «выход в этап». Если необходимо конкретизировать места, занятые участниками, придётся проводить дополнительные игры, из-за чего теряется основное преимущество плей-офф — быстрота.
Плей-офф широко применяется в национальных и международных соревнованиях по игровым видам спорта. Одно из названий плей-офф — «олимпийская система», связано с тем, что этот порядок розыгрыша является основным для игровых видов спорта на Олимпиаде. Для определения третьего места проводятся дополнительные игры между проигравшими полуфинал.
По системе плей-офф разыгрывается большое число титулов и высших наград в командных соревнованиях по игровым видам спорта, таким как хоккей, футбол и другие. При этом, если по виду проводится регулярный чемпионат и турнир плей-офф, то обычно выигрыш в плей-офф считается более почётным. Например, в НХЛ победителю регулярного чемпионата вручают Президент Трофи, но Кубок Стэнли, который получает победитель плей-офф, является для хоккеистов намного более престижным трофеем.
Впрочем, эта практика не повсеместна. В европейских футбольных чемпионатах, напротив, наиболее престижное звание чемпиона страны получает победитель регулярного чемпионата. По системе плей-офф в европейском футболе принято разыгрывать Кубок страны и Кубок УЕФА. Также есть стадия плей-офф в нескольких крупных турнирах — Лиге чемпионов, Чемпионатах Европы и мира, однако перед этим там проходит групповой турнир.
В большинстве Чемпионатов России по игровым видам спорта в настоящий момент звание Чемпиона России разыгрывается именно в играх на выбывание — сериях плей-офф.
В странах Азии по системе плей-офф проводятся многие отборочные турниры, определяющие претендентов на высшие титулы игры го. А вот в шахматных турнирах, напротив, плей-офф не распространён, хотя уже с 1960-х годов были предложения о введении именно этого порядка розыгрыша турнира претендентов на звание Чемпиона мира по шахматам (с таким предложением выступал, например, Роберт Фишер). Начиная с 1995 года ФИДЕ проводит турниры сильнейших игроков по нокаут-системе) которая представляет собой вариант плей-офф, а в течение десятилетия 1995-2004 лет официальный чемпион мира по версии ФИДЕ определялся также в нокаут-турнире, но затем ФИДЕ отказалась от нокаут-системы в чемпионате мира.
3. Функциональные модели и блок-схемы решения задачи
Функциональные модели и блок-схемы решения задачи представлены на рисунках 1 — 6.
/>
Рисунок 1 — Функциональная модель решения задачи для функции GET_WINNER
LST — список команд
N1, N2 — команды, участвующие в соревнованиях
/>
Рисунок 2 — Блок-схема решения задачи для функции INSERT
POS — позиция вставляемого элемента, LST — список, в который вставляем элемент, AT – элемент
/>
Рисунок 3 — Блок-схема решения задачи для функции: PLAY_OFF L — команды-участники, OUTPUT — поток вывода
/>
Рисунок 4 — Блок-схема решения задачи для функции UNION: LST — список, в котором просматриваются вхождения числа NUM, TEMP_NUM — рабочий список
/>
Рисунок 5 — Блок-схема решения задачи для функции COPY_HALF_LIST, LST_RES — список-результат, в который копируется первая половина списка LST, I — рабочая переменная
/>
Рисунок 6 — Блок-схема решения задачи для функции COPY_LAST_HALF_LIST, LST_RES — список-результат, в который копируется вторая половина списка LST, I — рабочая переменная
4. Программная реализация решения задачи
; составляем пары
(defun union (lst num)
(cond
( (null num) nil)
( (atom num)
(cond
( (null lst) nil)
( (atom lst) (if (not (eq lst num)) (list lst ': num)))
(t (cons (union (car lst) num) (union (cdr lst) num)))
)
)
(t (append (union lst (car num))
(progn
(setq temp_num (car num))
(setq lst (remove temp_num lst))
(union lst (cdr num))
)
)
)
)
)
; функция устанавливает счет матча
(defun set_res (lst)
(list (list (random 7) ': (random 7)) lst)
)
; копируем первую половину списка
(defun copy_half_list (lst)
(declare (special lst_res))
(setq lst_res nil)
(do
( (i 0))
( (>= i (/ (length lst) 2)) lst_res)
(setq lst_res (insert i lst_res (nth i lst)))
(setq i (+ i 1))
)
)
; копируем вторую половину списка
(defun copy_last_half_list (lst)
(declare (special lst_res))
(setq lst_res nil)
(do
( (i (/ (length lst) 2)) (iter 0))
( (>= i (length lst)) lst_res)
(setq lst_res (insert iter lst_res (nth i lst)))
(setq i (+ i 1))
(setq iter (+ iter 1))
)
)
; вставка элемента atв posпозицию списка lst
(defun insert (pos lst at)
(cond
( (null lst) (cons at nil))
( (eql pos 0) (cons at lst))
(t (cons (car lst) (insert ( — pos 1) (cdr lst) at)))
)
)
; функция выбирает победителя
(defun get_winner (lst)
(nth (random (length lst)) lst)
)
; функция иммитирует игру по олимпийской системе
(defun play_off (l output)
(cond
;если осталось 2 участника выбираем победителя и выходим из функции
((= (length l) 2)
(progn
(print 'pobeditel output)
(print (get_winner l) output)
)
)
( (/= (length l) 2)
(progn
;разбиваем команды на 2 группы
(setq group1 (copy_half_list l))
(print 'gruppa1 output)
(print group1 output)
(setq group2 (copy_last_half_list l))
(print 'gruppa2 output)
(print group2 output)
;формируем встречи комманд
(setq commands (mapcar 'list group1 group2))
(print 'igroki output)
(print commands output)
;выбираем победителя
(setq l (mapcar 'get_winner commands))
(print 'pobediteli output)
(print l output)
(print '______________________________________________ output) продолжение
--PAGE_BREAK--
;рекурсивно вызываем функцию play_offс новым
;списком комманд участников
(play_off l output)
)
)
)
)
; открываем файл и получаем команды
(setq input_stream (open "d: \\commands. txt": direction: input))
; вид системы
; 1 — круговая
; 2 — playoff
(setq system (read input_stream))
(setq commands (read input_stream))
(close input_stream)
(setq output_stream (open " d: \\play. txt": direction: output))
(if (= system 1)
;круговая система
(print (setq play (mapcar 'set_res (remove nil (union commands commands)))) output_stream)
;иммитируем игру по олимпийской системе для получееных комманд
(play_off commands output_stream)
)
(terpri output_stream)
(close output_stream)
5. Пример выполнения программы
Пример 1.
/>
Рисунок 7 — Команды, играющие по олимпийской системе
/>
Рисунок 8 — Игра команд по олимпийской системе
/>
Рисунок 9 — Команды, играющие по круговой системе
/>
Рисунок 10 — Игра команд по круговой системе
Пример 2.
/>
Рисунок 11 — Команды, играющие по олимпийской системе
/>
Рисунок 12 — Игра команд по олимпийской системе
/>
Рисунок 13 — Команды, играющие по олимпийской системе
/>
Рисунок 14 — Игра команд по олимпийской системе
Заключение
Система спортивных соревнований является главным системообразующим и интегрирующим фактором, наиболее существенно влияющим на все остальные элементы спорта. В основополагающих трудах ведущих теоретиков спорта соревнования трактуются как цель, средство, метод и модель подготовки, как мощный рычаг управления видом спорта.
Итогом работы можно считать созданную функциональную модель составления расписания встреч участников соревнований. Данная модель применима к круговой и олимпийской системе проведения спортивных соревнований. Созданная функциональная модель и ее программная реализация могут служить органической частью решения более сложных задач.
Список использованных источников и литературы
Бронштейн И.Н. Справочник по математике для инженеров и учащихся втузов [Текст] / И.Н. Бронштейн, К.А. Семендяев. — М.: Наука, 2007. — 708 с.
Круговая система [Электронный ресурс] — Режим доступа: ru. wikipedia.org/wiki/Круговая_система
Платонов В.Н. Профессиональный спорт. [Текст] / В.Н. Платонов, С.И. Гуськова. — К.: Олимпийская литература, 2000. С.293.
Плей-офф [Электронный ресурс] — Режим доступа: ru. wikipedia.org/wiki/Плей_офф
Степанов П.А. Функциональное программирование на языке Lisp. [Электронный ресурс] / П.А. Степанов, А.В. Бржезовский. — М.: ГУАП, 2003. С.79.
Столбов В.В. История физической культуры. [Электронный ресурс] / В.В. Столбов, И.Г. Чудинов — М.: ФиС. 1999. С.643.
Симанков В.С. Основы функционального программирования [Текст] / В.С. Симанков, Т.Т. Зангиев, И.В. Зайцев. — Краснодар: КубГТУ, 2002. — 160 с.
Хювенен Э. Мир Лиспа [Текст] / Э. Хювенен, Й. Сеппянен. — М.: Мир, 1990. — 460 с.