Научная статья на тему 'Вопросы алгоритмизации составления временной сетки расписания учебных занятий'

Вопросы алгоритмизации составления временной сетки расписания учебных занятий Текст научной статьи по специальности «Математика»

CC BY
102
16
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Вопросы алгоритмизации составления временной сетки расписания учебных занятий»

ИЗВЕСТИЯ

ТОМСКОГО ОРДЕНА ОКТЯБРЬСКОЙ РЕВОЛЮЦИИ И ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ПОЛИТЕХНИЧЕСКОГО ИНСТИТУТА имени С. М. КИРОВА

Том 187 1974

ВОПРОСЫ АЛГОРИТМИЗАЦИИ СОСТАВЛЕНИЯ ВРЕМЕННОЙ СЕТКИ РАСПИСАНИЯ УЧЕБНЫХ ЗАНЯТИЙ

И. Э. НААЦ

(Представлена научным семинаром вычислительной лаборатории)

В общей задаче алгоритмизации процесса составления расписания учебных занятий можно выделить ряд самостоятельных вопросов. Это прежде всего такие задачи, как распределение учебной нагрузки по преподавателям, составление временной сетки расписания и распределение аудиторного фонда. Первая задача находится несколько в стороне от проблемы автоматизации составления расписания и в данной работе не рассматривается. Решение ее связано с вопросами научной организации п планирования педагогической работы преподавателей как одной из специфических форм деятельности человека. К сожалению, эта область исследований мало привлекает внимание специалистов, и в настоящее время отсутствуют какие-либо рекомендации на этот счет.

Вторая задача является самой значительной по затратам ручного труда составителя. Исследованию вопросов составления временной сетки расписания и разработке алгоритмов для автоматизированного составления на вычислительных машинах и посвящена данная статья. Третья задача является предметом самостоятельного исследования и в настоящей работе не рассматривается.

Основные понятия. Определение логической структуры алгоритма составления временной сетки расписания

Прежде чем приступить к анализу и определению структуры алгоритма, необходимо ввести понятия, в терминах которых возможно формальное и однозначное описание всей последовательности операций по составлению временной сетки расписания учебных занятий. Введем понятие элемента расписания.

Определение 1. Элементом расписания будем называть выражение вида

А{аЬс....).

В общем случае символы А, а, Ъ, с... могут иметь буквенное, буквенно-цифровое и цифровое обозначение.

А называется индексом элемента, выражение в фигурных скобках — характеристикой элемента. Индекс выражает код преподавателя; а ха-

рактеристика — группы, в которых он ведет данное занятие. Например, запись

Л(12345678]

означает, что преподаватель А проводит занятие одновременно в восьми группах, номера которых условно обозначены цифрами 1, 2, ... &. Запись В {00045000} означает, что преподаватель В .проводит одновременно занятие с группами 4 и 5 из восьми рассматриваемых.

Если все символы характеристики, за исключением одного, есть 0, то это значит, что преподаватель с данным индексом проводит занятие только в одной группе, номер которой и отличен от нуля. Такие элементы, как правило, обозначают практические занятия. Элементы, обозначающие поточные занятия, имеют по крайней мере два ненулевых символа. Таким образом, для построения характеристики элемента используется позиционный принцип, т. е. отсутствие занятия или его наличие в данной группе обозначается расположением нулевого символа или номера группы в определенном месте характеристики. В связи с этим можно дать другое чисто семантическое определение элемента.

Определение 2. Под элементом расписания понимается символическая запись в цифро-буквенной форме того факта, что преподаватель А имеет, по крайней мере, одно занятие с любой из N рассматриваемых групп.

Определение (1) дает нам структуру элемента, определение (2) — его содержание.

В результате вся исходная информация об учебной нагрузке в N группах может быть представлена в виде упорядоченного множества (колонки, таблицы и т. д.) элементов. Пример такой записи

А {12300000} В {10345000} С {00000678}.

Если преподаватель проводит одно и то же занятие в данной группе несколько раз за период времени, для которого составляется расписание (обычно этот период охватывает две недели), то в колонку нагрузки соответствующий элемент записывается соответствующее число раз.

Определение 3. Два элемента будем называть совместными, если они имеют разные индексы и разные характеристики, в противном случае элементы будем называть несовместными.

Условие совместности, данное в определении (3), имеет исключительно важное значение для дальнейшего анализа, поэтому сделаем более подробные пояснения.

Существо процесса составления временного расписания учебных занятий сводится фактически к выявлению таких занятий, которые могут проходить одновременно или, иными словами, могут быть совмещены во времени. Очевидно, что к таким занятиям относятся занятия разных преподавателей в разных группах. В противном случае имеет; место так называемое наложение во времени, и расписание теряет практический смысл. В введенных выше терминах составление расписания может быть представлено как разбиение исходного множества элементов на подмножества совместных элементов. Такие подмножества в дальнейшем будем называть блоками, т.е. имеет место следующее:

Определение 4. Блок — это множество, все элементы которого совместны между собой.

Отметим, что введенное понятие совместности отлично от понятия эквивалентности. Поэтому задача разбиения исходного множества элементов на блоки отлична от разбиения множества на классы эквивалентности. Действительно, справедливы следующие леммы:

Лемма 1. Элемент Л несовместен самому себе.

Лемма 2. Если элемент А совместен элементу В, а элемент В совместен элементу С, то А и С необязательно совместны между собой.

Эти леммы легко доказываются от противного. В понятии же эквивалентности элемент множества эквивалентен самому себе. Это говорит о том, что условие совместности имеет- более сложную логическую структуру. Из вышеприведенного анализа следует, что для того, чтобы решить, можно включить рассматриваемый элемент в данный блок или нет, необходимо проверить выполнение условия совместности со всеми элементами этого блока, т. е. в целом по блоку. При разбиении же множества на классы эквивалентности достаточно проверить условие эквивалентности рассматриваемого элемента с любым элементом данного подмножества.

В блоке как множестве сложной структуры можно построить два простых множества: множество всех индексов элементов данного блока и множество всех характеристик- Эти множества не содержат двух одинаковых элементов, если не считать элемент 0. При построении второго множества (объединение характеристик) сохраняем позиционный принцип расположения элементов, отбрасывая соответствующие нулевые эле* менты и сохраняя тем самым неизменным общее число символов (разря дов) при переходе от характеристик к данному множеству. Эти построения используем для упрощения логической структуры алгоритма формирования блоков из совместных элементов расписания. С этой целью введем понятие гиперэлемента блока.

Определение 5. Гиперэлемент блока есть выражение вида

Ч ABC...{abc...},

где у— номер гиперэлемента (соответственно блока),

ABC ... — индекс гиперэлемента,

{abc ... } — характеристика. Характеристику гиперэлемента, как и характеристику элемента, ниже будем записывать в цифровой форме. При этом индекс гиперэлемента и его характеристика являются объединением соответственно индексов и характеристик по вышеуказанному правилу всех элементов, входящих в блок с номером у.

Лемма 3. Гиперэлемент не является элементом блока.

По определению гиперэлемент является объединением индексов и характеристик элементов и, следовательно, является несовместным к любому элементу данного блока. Это и доказывает лемму (3).

Лемма 4. Если блок состоит из одного элемента, то этот элемент является гиперэлементом этого блока. Справедливость леммы (4) вытекает из определения (5) гиперэлемента.

Гиперэлемент является некоторой обобщенной характеристикой блока, не имеющего содержательного смысла и предназначенного для упрощения логической структуры алгоритма. Более полно назначение гиперэлемента в алгоритме машинного составления расписания будет раскрыто ниже, а пока сформулируем следующую теорему.

Теорема 1. Если элемент совместен некоторому гиперэлементу, то он совместен соответствующему блоку в целом.

Теорема легко доказывается от противного с использованием леммы (3).

Полученные результаты можно сформулировать следующим образом: для того, чтобы решить, можно включать данный элемент в блок у или нет, достаточно проверить условие совместности данного элемента с гиперэлементом этого блока. Таким образом, введение гиперэлемента значительно сокращает число операций, выполняемых машиной, поскольку отпадает необходимость проверки условия совместности данного элемента с каждым элементом блока.

Полные и неполные блоки. Заполнение временной сетки расписания

Определение 6. Характеристику, не содержащую нулей, будем называть полной относительно множества групп, в противном случае — неполной.

Примером полной характеристики элемента (соответственно гиперэлемента) является характеристика вида {12 3 4 5 6 7 8} и неполной {1 0000008}.

Определение 7. Если гиперэлемент имеет полную характеристику, то соответствующий блок будем называть полным относительно рассматриваемого множества групп, в противном случае — н е и о л н ы м.

Полнота блока относительно рассматриваемого множества групп означает, что в данный блок уже не может быть включен ни один элемент из исходного множества занятий и процесс формирования данного блока должен быть окончен. Справедлива следующая

теорема 2. Если характеристика какого-либо элемента исходного множества занятий полна, то этот элемент образует полный блок.

Иными словами, теорема (2) определяет условия, при которых полный блок состоит из одного элемента. Этот единственный элемент является в то же время и гиперэлементом блока.

Предположим, что составляется расписание для N групп, при этом ¿-тая группа за две недели имеет а{ занятий (соответственно 2 а£ часов) (I = 1, 2... Щ, Если обозначить через

ага1п=пппа£., (1)

ашах=тахаг, (2)

то число полных блоков равно

Я-п^Ятт (3)

и соответственно неполных

Пп — ^шах

Общее число блоков определяется как

п=пп+пн. (5)

Величина п определяет'число ячеек временной сетки, необходимое для проведения занятий в этих N группах. При этом под временной ячейкой в данном случае понимается отрезок времени, который необходим для проведения одного занятия, т. е. 2 часа. Тогда общее рабочее время за 2 недели (ежедневно по 7 занятий с 9 часов утра до 11 часов вечера)

в 2x7x12—168 часов может рассматриваться как временная сетка из 84 ячеек. В этом смысле далее и будут использоваться понятия временной сетки и ячейки.

В этих понятиях дальнейшее составление расписания после формирования блоков состоит в размещении их по ячейкам временной сетки. При этом, если рассматривается N групп, то в одну и ту же ячейку не должны попасть два блока. Условием непопадания двух блоков в одну и ту же ячейку является их несовместность.

Определение 8. Два блока будем называть несовместными, если несовместны их гиперэлементы. В противном случае — совместными.

Лемма 5. Для N рассматриваемых групп все блоки несовместны друг с другом.

Действительно, если бы нашлись два совместных блока, то они могли бы быть объединены в один ввиду совместности их гиперэлементов. В частности, это доказывает справедливость (5), так как а1 определяет, сколько раз ¿-тая группа входит в элементы исходного множества занятий.

В результате распределения блоков по временной сетке каждому блоку присваивается номер соответствующей ячейки, и временное расписание можно считать составленным. Однако практически распределение блоков по ячейкам весьма сложно и трудоемко.

Рассмотрим два множества групп О и Р. Множество преподавателей, ведущих занятия в этих группах, обозначено через / о и 1р соответственно. Справедлива следующая

теорема 3. Блоки множества О совместны .блокам множества Р только в том случае, когда множества 1° и,/р не'пересекаются, т. е.

/оП Ь=0.

Теорема доказывается от противного с использованием соответствующих определений 1.

В результате возникает следующая интересная задача: можно ли все множество групп разбить на систему подмножеств так, чтобы соответствующие подмножества преподавателей не пересекались. Если такая задача решается, то для каждого из полученных подмножеств групп временное расписание можно составлять независимо друг от друга, ибо блоки их будут совместны. Это очень важно с той точки зрения, что при наличии таких независимых множеств групп количество одновременно перерабатываемой информации будет сравнительно небольшим. В противном случае приходится оперировать большим объемом информации, даже если расписание составляется для небольшого числа групп. Если же не удается разбить группы на. независимые подмножества, то ставится задача совмещения блоков для множеств О и Р. Поскольку множества блоков Ьок Ьр содержат несовместные блоки, то задача сводится к нахождению пары совместных блоков: одного из ¿с другого из ¿р. Для решения этой задачи может использоваться тот же алгоритм, что и для составления блоков. (

Компактные расписания

/

Выше уже отмечалось, что число временных ячеек, необходимое для размещения расписания, определяется числом составленных блоков, поскольку в каждую ячейку помещается по одному блоку. В свою очередь число блоков определяется максимальным значением нагрузки ¿-той группы из множества всех групп. Однако анализ будет неполным, если

не учитывать множество преподавателей при формировании блоков.

Пусть, как и прежде, а —число занятий в ¿-той группе за две недели, где 1=1, 2 ... N. Введем Ь} как число занятий, проводимых /-тым преподавателем в N рассматриваемых группах тоже за две недели, где /= 1, 2 ... М.

Вполне очевидно выполнение следующего неравенства

М N

(6)

;=1 1=1

Равенство (6) выполняется только для множества практических занятий, т. е. когда' каждый преподаватель одновременно ведет занятие только с одной из групп. В общем случае с учетом лекции (6) дает строго неравенство. Поскольку в каждый блок преподаватель и группа входят только по одному разу, то справедлива следующая теорема 4. Число блоков определяется как

п—шаха,, (7)

1 -с I < ¿V

I

I

если

шах ¿>*<тах аь (8)

и как

п! — шах б,-, (9)

1 <\<ж

в противном случае, т. с. когда

тах6,->шах а£. (10)

1</<лг 1

В первом случае, т. е. когда выполняется условие (8), расписание будем называть компактным, во втором — некомпактным.

Компактность означает, что при заполнении блоками временных ячеек соответствующее расписание не будет содержать «окон» для групп. Кстати, это является одним из основных требований, предъявляемых к расписанию учебных занятий.

При некомпактном расписании, поскольку число блоков пг превышает все без исключения числа а1у при заполнении временных ячеек блоками в расписании возможны «окна». Этот факт объясняется либо нехваткой преподавателей, либо неравномерным распределением нагрузки, так как наибольшая нагрузка, приходящаяся на какого-то преподавателя (или преподавателей), превышает наибольшую учебную нагрузку группы согласно (10). Такие неравномерности в распределении нагрузки должны быть устранены по крайней мере так, чтобы

шах 6.- = шах а[9 (11)

1 < / ЛГ 1:1-; Л'

ибо в противном случае произойдет неоправданное удлинение расписания на Ап — Ьтах—атах ячеек, или 2Дп часов. Однако подобное удлинение расписания вряд ли возможно в практических случаях. В качестве примера анализа рассматривалось исходное множество занятий для

групп геологоразведочного факультета по графику 1965/66 учебного года.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Анализ показывает, что каждые 8 групп (среднее число групп на курсе) в среднем при 15 различных предметах «обслуживают» 46 и более преподавателей, т. е. имеет место слабая локализация преподавателей в данных группах. Это заставляет сомневаться в возможности разбиения всего множества групп на независимые (в смысле теоремы 3) подмножества с целью уменьшения объема одновременно перерабатываемой информации. Поэтому, чтобы получить соответствующую эффективность в применении вычислительных средств для составления временной сетки расписания, необходимо составлять его сразу в целом для всего института. В противном случае промежуточная ручная обработка информации по увязке отдельных частей сетки поставит под сомнение целесообразность использования вычислительных машин.

Алгоритм составления временной сетки расписания

Вначале дадим общее описание алгоритма.- В целях простоты будем считать, что элемент расписания помещается в одну ячейку памяти машины, при этом принимается следующая структура ячейки:

0 а, у а, х а,

где в часть ячейки та записывается индекс преподавателя, в у а — характеристика, элемента и в ва — признаки «элемент занят» или «элемент свободен», т.е. вошел или нет в один из сформированных ранее блоков. Исходное множество занятий предстанет в виде множества ячеек А[а-[-/] (¿=1, 2 ... N). Индекс гиперэлемента будем формулировать в ячейке г 1, а его характеристику — в ячейке с 1. Если элемент совместен гиперэлементу блока, формируемого в данный момент времени, то его характеристика у[а-{-1] складывается с содержимым ячейки с 1, а индекс заносится в соответствующее место ячейки г 1. При этом осуществляется печать (выход) содержимого ячейки (а+/). В результате блок печатается в виде колонки совместных элементов. Блок считается сформированным, если полна характеристика гиперэлемента, т. е. с 1 = = 111..., либо среди оставшихся исходных элементов больше нет совместных.

Ячейки временной сетки представлены массивом ячеек памяти НМЛ В[&+/]. В ячейке (6+]) записаны индексы преподавателей разрядностью т, которые уже ранее при составлении расписания были помещены в данную временную ячейку. Если сформированный блок может быть помещен в данную временную ячейку (соответственно ячейка памяти (6+/), т. е. если содержимое ячейки и г 1 совместно, то

вслед за отпечатанными элементами блока печатается адрес ячейки (6+/), соответствующий номеру временной ячейки. Индексная часть гиперэлемента г 1 заносится в ячейку (6+/). Затем программа повторяется для оставшихся элементов исходного множества занятий.

Формальное описание алгоритма дадим в терминах алгоритмического языка АЛГОЛ-бО.

Алгоритм

Начало массив Л[а+*'];

Ь: ¿:=1 перейти к 0'; если 0[а+г]=О то выполнить;

Начало, если с1=0 то

с\\ = у[а+1]\

вывод (а-\-1)\

в[а+ф=и

Г1:=т[а+1']; к;=1;

Иначе перейти к М; Конец

Иначе выполнить Начало = £ +1;

Если ¿^.Ы, то перейти к С} иначе;

(останов)

Конец

М: начало если у [а~\~1]фс 1 то перейти к Р Иначе выполнить;

Если ¿^.Ы то (2 иначе Ы; Конец

Р: индекс: =%[а+1]Х2\(тХ/); Если индекс фг\ для /=0 шаг 1 по/са й, го

с1: = с1+т[а+/]; г1: = г1+т[а+1']Х2|(/Х^);

вывод

Перейти к Р1, иначе Ы; Р1: если с 1 = 11..., то Ь1 иначе

¿.• = ¿+1 перейти к С}; Ы: массив В[Ь+/]

01: если в[6+/]=0 го (?1 ш*аче у;=/-|-1 перейти к (¿1;

Комментарий: подразумевается, что практически для всех случа-

ев, условие />М означало бы, что данный блок не может быть помещен ни в одну временную ячейку. Если же необходимо осуществлять контроль заполнения временной сетки, то можно ввести в 01 оператор: -

если ¡<М то иначе;

Затем следует останов, ибо возникает неопределенность в размещении блока, которая может быть устранена увеличением числа ячеек временной сетки.

01: р: = О

С2: начало лектор: =т[г1]Х2|(тХ/7);

время: -=т[6+ЛХ2|(гХ<7);

Для ¿7=0 шаг 1 пока пг выполнить; Если лектор ф время то

р:=р+1;

Если р^к то С2 иначе 03 иначе;

/; = /+1 перейти к (21;

Конец;

вЗ: ©[&+/]:= 1; выход (&+/)

Комментарий, т. е. печатается время для данного блока.

с1:=0; г 1: =0; Л: = 0;

перейти к L /Соягц

Описанный алгоритм был реализован на машине «Минск-1» в вычислительной лаборатории ТПИ (см. [1]).

ЛИТЕРАТУРА

1. Н. М. Б ы л и н о. Разработка программы составления временной сетки расписания па ЭВМ «Минск-1», (Настоящий сборник).

i Надоели баннеры? Вы всегда можете отключить рекламу.