Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матвей сгдм.DOC
Скачиваний:
1
Добавлен:
27.04.2019
Размер:
753.66 Кб
Скачать

1.9. Дальнейшие операции над протоколами

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

1.9.1. Замена символа

Пусть f – функция, отображающая символы из множества A в множество В. С помощью f можно построить новую функцию f*, отображающую последовательность символов из А* в последовательность символов из В*, путем применения f к каждому элементу последовательности. Например, если удвоить – функция, удваивающая свой целый аргумент, то

удвоить*(<1, 5, 3, 1>) = <2, 10, 6, 2>

Очевидно, что функция со звездочкой является дистрибутив­ной и, следовательно, строгой.

L1. f*(<>) = <>

L2. f*(<x>)) = <f(x)>

L3. f*(s^t) = f*(s)^f*(t)

Остальные законы являются очевидными следствиями:

L4. f *(s)0 = f(s0) если s ≠ <>

L5. #f*(s) = #s

Однако следующий очевидный закон, к сожалению, справедлив не всегда;

f*(sA) = f*(s)f(A), где f(A) = {f(x) | xA}

Простейший контрпример представляет собой функция f та­кая, что

f(b) = f(c) = c, где bc

Так как b ≠ с, то, следовательно,

f*(<b>{c}) = f*(<>)

= <>

<c>

= <c>{c}

= f*(<c>)f({c}) так как f(c) = c

Если же функция f взаимно однозначна, то данный закон выполняется:

L6. f*(sA) = f*(s)f(A), при условии, что f –инъективная функция.

1.9.2. Конкатенация

Пусть s – последовательность, каждый элемент которой в свою очередь является последовательностью. Тогда ^/s получается из s конкатенацией всех ее элементов в их ис­ходном порядке, например:

^/<<1, 3>, <>, <7> = <1, 3>^<>^<7> = <1, 3, 7>

Эта операция дистрибутивна:

L1. ^/<> = <>

L2. ^/(s) = s

L3. ^/(s^t) = (^/s)^(^/t)

1.9.3. Чередование

Последовательность s является чередованием последова­тельностей t и u, если ее можно разбить на серию подпоследовательностей, которые, чередуясь, представляют собой под­последовательности из t и u. Например,

s = <1, 6, 3, 1, 5, 4, 2, 7>

является чередованием t и u, где t = <1, 6, 5, 2, 7>, а u = <3, 1, 4>

Рекурсивное определение чередования можно задать следующими законами:

L1. <> чередование(t, u) (t = <> & u<>)

L2. s чередование(t, u) s чередование(u, t)

L3. (<x>^s) чередование(t, u)

(t <> & t0 = x & s чередование(t’, u)

(u <> & u0 = x & s чередование(t, u’)

1.9.4. Индекс

Если 0 ≤ i ≤ #s, то мы используем привычную запись s[i] для обозначения i-го элемента последовательности s, как это описано в законе L1:

L1. s[0] = s0 & s[i + l] = s’[i], при условии, что s ≠ <>

L2. (f*(s))[i] = f(s[i]) для i < #s

1.9.5. Обратный порядок

Если s – последовательность, то получается из s взятием ее элементов в обратном порядке. Например,

< > = <37, 5, 3>

Полностью обратный порядок задают следующие законы:

L1. = <>

L2. = x

L3. =

Обратный порядок обладает рядом простых алгебраических свойств, в том числе:

L4. = s

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

L5. = s[#s – i – i] для i < #s

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]