Jump to content

Очередь календаря

Календарная очередь (CQ) — это приоритетная очередь (очередь, в которой каждому элементу присвоен соответствующий приоритет, а операция удаления из очереди удаляет элемент с наивысшим приоритетом). Он аналогичен настольному календарю, который используется людьми для упорядочения будущих событий по дате. Для моделирования дискретных событий требуется структура списка будущих событий (FEL), которая сортирует ожидающие события по их времени. Такие симуляторы требуют хорошей и эффективной структуры данных , поскольку время, затрачиваемое на управление очередью, может быть значительным. Календарная очередь (с оптимальным размером сегмента) может достигать средней производительности O(1). Очереди календаря тесно связаны с очередями сегментов, но отличаются от них способом поиска и динамическим изменением размера.

Выполнение

[ редактировать ]

Теоретически, как и очередь сегментов, календарная очередь состоит из массива связанных списков . Иногда каждый индекс в массиве также называют сегментом. Сегмент имеет указанную ширину, и его связанный список содержит события, временная метка которых соответствует этому сегменту. Настольный календарь имеет 365 сегментов на каждый день шириной в один день. Каждый элемент массива содержит один указатель , который является заголовком соответствующего связанного списка. Если имя массива — «месяц», то месяц[11] — это указатель на список событий, запланированных на 12-й месяц года (индекс вектора начинается с 0). Таким образом, полный календарь состоит из массива из 12 указателей и набора из 12 связанных списков. В календарной очереди постановка в очередь (добавление в очередь ) и удаление из очереди (удаление из очереди) событий в FEL зависит от времени события.

Пусть очередь календаря состоит из n сегментов шириной w . Тогда очередь события со временем t работает с сегментом . И более двух событий, запланированных в сегменте в соответствии с увеличенной меткой времени. Чтобы исключить события из очереди календаря, он отслеживает текущий год и день. Затем он ищет самое раннее событие в этом сегменте и удаляет его из очереди. (Напротив, очередь сегментов просто вернет любой элемент из первого непустого сегмента, не определяя, какой элемент в этом блоке является самым ранним.)

Операция изменения размера очереди календаря

[ редактировать ]

Если количество событий в очереди намного меньше или намного больше количества сегментов, она не будет работать эффективно. Решение состоит в том, чтобы позволить количеству сегментов соответственно увеличиваться и уменьшаться по мере роста и сокращения очереди. Чтобы упростить операцию изменения размера, Nb (количество сегментов) в CQ часто выбирается равным степени двойки, т.е. ;↵

Количество сегментов удваивается или уменьшается вдвое каждый раз, когда Ne (количество событий) превышает 2 Nb или уменьшается ниже Nb /2 соответственно. При изменении размера Nb новую ширину w необходимо также рассчитать . Новое принятое значение w будет оцениваться путем выборки среднего временного интервала между событиями из первых нескольких сотен событий, начиная с текущей позиции сегмента. После этого будет создана новая очередь календаря, и все события в старом календаре будут перекопированы.

  • Браун, Р. (октябрь 1988 г.), «Очереди календаря: быстрая реализация очереди приоритетов для проблемы набора событий моделирования», Communications of the ACM , 31 (10): 1220–1227, doi : 10.1145/63039.63045 , S2CID   32086497
  • Эриксон, К. Брюс; Ладнер, Ричард Э.; ЛаМарка, Энтони (2000), «Оптимизация очередей статического календаря», Транзакции ACM по моделированию и компьютерному моделированию , 10 (3): 179–214, doi : 10.1145/361026.361028
  • Фудзимото, Ричард М. (октябрь 1990 г.), «Параллельное моделирование дискретных событий» , Communications of the ACM , 33 (10): 30–53, doi : 10.1145/84537.84545 , S2CID   15054137
  • Тан, Ка Леонг; Тнг, Ли-Джин, «Очередь календаря SNOOPy», Материалы зимней конференции по моделированию 2000 г. , IEEE, doi : 10.1109/wsc.2000.899756 , S2CID   2982776
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 46e32a4f19753f87fb847fe6d848f7b7__1721164980
URL1:https://arc.ask3.ru/arc/aa/46/b7/46e32a4f19753f87fb847fe6d848f7b7.html
Заголовок, (Title) документа по адресу, URL1:
Calendar queue - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)