
- •4. Обратная польская запись операций
- •5. Заполнение таблицы идентификаторов методом цепочек (хэш адресация методом цепочек)
- •6. Заполнение таблицы идентификаторов методом рехеширования с помощью произведения
- •7. Цепочки вывода и дерево вывода
- •8. Преобразование конечного автомата (ка) в детерминированный конечный автомат (дка)
- •9. Дерево вывода и цепочка вывода, построенные на основе входной цепочки. Преобразование дерева синтаксического обзора в дерево операций
1. Триады - многоадресный код с неявно именуемым результатом
C=A*12+K*(2-3*B)
1. *(A,12)
2. *(3,B)
3.
– (2,2
)
4. *(K,3 )
5. +(1 ,4 )
6.:= (C,5 )
2. Тетрады – многоадресный код с явно именуемым результатом
C=A*12+K*(2-3*B)
1. *(A,12,D1)
2. *(3,B,D2)
3. – (2,D2,D3)
4. *(K,D3,D4)
5. +(D1,D4,D5)
6.:= (D5,0,C)
3. Построение таблицы идентификаторов методом бинарного дерева. Идентификаторы поступают в следующем порядке: K1, A22, B1, M, P3, L. Решение: создаем дерево идентификаторов, листья пишутся с точи зрения расположения букв в алфавите – если по алфавиту меньше то на налево, если больше то направо.
4. Обратная польская запись операций
Вычислить выражения в обратной польской записи с использованием стека. Выражение: 5*9-6*(3+4)
5 |
|
9 |
|
* |
|
6 |
|
3 |
|
4 |
|
+ |
|
* |
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
3 |
|
7 |
|
|
|
|
|
|
9 |
|
|
|
6 |
|
6 |
|
6 |
|
6 |
|
42 |
|
|
5 |
|
5 |
|
45 |
|
45 |
|
45 |
|
45 |
|
45 |
|
45 |
|
3 |
5. Заполнение таблицы идентификаторов методом цепочек (хэш адресация методом цепочек)
Идентификаторы поступают в следующем порядке: ab, ac, an, ak, bc, az, ck. Максимальное значение ХФ Nm=13 (под ХТ будет выделен объем памяти, равный 13). Используемая ХФ-ASCII-код первой буквы идентификатора.
h(ab)=h(ac)=h(an)=h(ak)=h(az)=d7
h(bc)=d3
h(ck)=d9
|
ХТ |
|
|
ТИ |
|
d1 |
|
|
a1 |
ab |
a2 |
d2 |
|
|
a2 |
ac |
a3 |
d3 |
a5 |
|
a3 |
an |
a4 |
d4 |
|
|
a4 |
ak |
a5 |
d5 |
|
|
a5 |
bc |
a6 |
d6 |
|
|
a6 |
az |
a7 |
d7 |
a1 |
|
a7 |
ck |
- |
d8 |
|
|
|
|
|
d9 |
a7 |
|
|
|
|
d10 |
|
|
|
|
|
d11 |
|
|
|
|
|
d12 |
|
|
|
|
|
d13 |
|
|
|
|
|
6. Заполнение таблицы идентификаторов методом рехеширования с помощью произведения
Формула для простого рехеширования hi(A)=(h(A)+i)mod Nm
Формула для рехеширования с помощью произведения hi(A)=(h(A)*i)mod Nm
Идентификаторы поступают в следующем порядке: ab, ac, an, ak, bc, az, ck. Максимальное значение ХФ Nm=13 (под ТИ будет выделен объем памяти, равный 13). Используемая ХФ- ASCII-код первой буквы идентификатора.
h(ab)=h(ac)=h(an)=h(ak)=h(az)=d7
h(bc)=d3
h(ck)=d9
|
ТИ |
d1 |
ac |
d2 |
ak |
d3 |
|
d4 |
|
d5 |
ck |
d6 |
|
d7 |
ab |
d8 |
an |
d9 |
az |
d10 |
|
d11 |
|
d12 |
|
d13 |
|
Шаг 1. h(ab)=d7
Шаг 2. h(ac)=d7 - коллизия
h1(ac)=(h(ac)*1)mod13=d7 - коллизия
h2(ac)=(h(ac)*2)mod13=d1
Шаг 3. h(an)=d7 - коллизия
h1(an)=(h(an)*1)mod13=d7 - коллизия
h2(an)=(h(an)*2)mod13=d1- коллизия
h3(an)=(h(an)*3)mod13=d8
Шаг 4. h(ak)=d7 - коллизия
h1(ak)=(h(ak)*1)mod13=d7 - коллизия
h2(ak)=(h(ak)*2)mod13=d1 - коллизия
h3(ak)=(h(ak)*3)mod13=d8 - коллизия
h4(ak)=(h(ak)*4)mod13=d2
Шаг 5. h(bc)=d3
Шаг 6. h(az)=d7 - коллизия
h1(az)=(h(az)*1)mod13=d7 - коллизия
h2(az)=(h(az)*2)mod13=d1 - коллизия
h3(az)=(h(az)*3)mod13=d8 - коллизия
h4(az)=(h(az)*4)mod13=d2 - коллизия
h5(az)=(h(az)*5)mod13=d9
Шаг 7. h(ck)=d9 - коллизия
h1(ck)=(h(ck)*1)mod13=d9 - коллизия
h2(ck)=(h(ck)*2)mod13=d5