Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЭ-2013-анн-130515.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
1.69 Mб
Скачать

Деление многочленов

Пусть k записывается как k=2nbn+2n-1bn-1+…+2b1+b0, M=2m. Представим ключ в виде многочлена k(t)=bntn+ bn-1tn-1+…+b1t+b0 и определим остаток от деления его на многочлен c(t)=tm+cm-1tm-1+…+c1t+c0. Этот остаток, представленный в двоичной системе, и будет значением функции h(k). Если c(t)простой неприводимый многочлен, то при условии близких, но неравных ключей k1 k2 выполняется h(k1) h(k2). Этот метод обладает сильным свойством рассеивания ключей.

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

8.6. Алгоритмы разрешения коллизий в перемешанных таблицах, основанные на методах внешних и внутренних цепочек Метод внешних цепочек

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

Метод внутренних цепочек

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

9. Сети Петри

9.1. Определение и основные понятия сетей Петри. Структура, графы, маркировка Структура сетей Петри

Определение. Сеть Петри – это четвёрка C=(P, T, I, O), где P = {p1, p2, … pn} – конечное множество позиций, T = {t1, t2, … tm} – конечное множество переходов, PT=, I: T P: – входная функция, O: T P: – выходная функция. Входная и выходная функции отображают переходы в комплект позиций.

Позиция pi – входная для перехода tj, если pi I(tj) и выходная, если pi O(tj). Кратность входной позиции pi для перехода tj – это #(pi, I(tj)). Кратность выходной позиции pi для перехода tj – это #(pi, O(tj)).

Определение. Переход tj – вход позиции pi, если pi – это выход tj, и наоборот, tj – выход позиции pi, если pi – это вход tj.

Определение. Расширенная входная функция дополняет входную функцию следующим образом: I: P T, расширенная выходная функция – O: P T :, причём, #(tj, I(pi)) = #(pi, O(tj)) и #(tj, O(pi)) = #(pi, I(tj)).

Если обычная входная или выходная функции отображает переходы в комплекты позиций, то в расширенной добавляется отображение позиций в комплект переходов.

Пример

Определим сеть Петри C=(P, T, I, O).

P=(p1, p2, p3, p4, p5);

T=(t1, t2, t3, t4);

Входные и выходные функции переходов:

tj

I(tj)

O(tj)

t1

{p1}

{p2, p3, p5}

t2

{p2, p3, p5}

{p5}

t3

{p3}

{p4}

t4

{p4}

{p2, p3}

Расширение входной и выходной функции:

pi

I(pi)

O(pi)

p1

{ }

{t1}

p2

{t1, t4}

{t2}

p3

{t1, t4}

{t2, t3}

p4

{t3}

{t4}

p5

{t1, t2}

{t2}

Для построения расширенной входной функции выбираются последовательно все позиции pi P и для них просматриваются все значения выходной функции. Если есть такие tj, что piO(tj), они и формируют комплект I(pi). То есть, I(pi)={tjT | piO(tj)}.

Конец примера

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

В работе [2-Котов] приведено другое, но тоже эквивалентное определение сети Петри.

Определение. Сеть – это тройка (P, T, F), где

P – непустое множество элементов сети, называемое местами,

T – непустое множество элементов сети, называемое переходами,

FPT TP – отношение инцидентности, и для (P, T, F) выполняются следующие условия:

А1) PT=;

А2) (F) & (xP T, yP T: xFy yFx);

А3) если для элемента сети x обозначить *x = {y | yFx} множество его входных элементов, а x* = {y | xFy} множество его выходных элементов, то

p1, p2P: (*p1=*p2) & (p1*=p2*) (p1=p2).

Конец определения.

Понятно, что в этом определении места – это позиции, а отношение F соответствует какой-то из обобщённых функций. В некотором смысле это определение проще и строже, но мы, тем не менее, будем следовать изложению, данному в [1- Питерсон].