Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

metoda_2013

.pdf
Скачиваний:
54
Добавлен:
03.05.2015
Размер:
6.36 Mб
Скачать

ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР

множеством правил. Множество цепочек, символов называется формальным языком.

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

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

Вобщем виде правила грамматики можно записать :

<нетерминал>: <любая_конечная_цепочка_терминальных_и_нетерминальных_с имволов> <нетерминал>: <цепочка_терминалов>

<нетерминал>: ε (Эпсилон - правило)

Контекстно – свободная грамматика (КСГ) задаётся:

конечное множество терминальных символов;

конечное множество нетерминальных символов;

конечное множество правил вывода:

вида : <A> α, где А- нетерминал, α –цепочка

нетерминальных и терминальных символов (возможно пустая) или цепочка терминальных символов;

нетерминал А называется левой частью правила, а α – правой;

аксиома грамматики – один нетерминальный символ,

выделенный в качестве начального; Правила грамматики задают способы подстановки цепочек.

Подстановка осуществляется заменой нетерминального символа в заданной цепочке на правую часть правила, левой частью которого является такой нетерминал.

Пример: SaAbS Sb ASac

Aε, где < S > - начальный символ, {A,S} – множество нетерминальных символов, {a,b,c} - множество терминальных символов

Основные понятия теории формальных языков и грамматики.

Язык, задаваемый грамматикой, есть множество терминальных цепочек, которые можно вывести из начального символа грамматики.

430

ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР

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

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

V – алфавит терминальных символов.

V* – множество всех конечных слов или цепочек в алфавите V. Формальный язык L над алфавитом V - это произвольное подмножество множества V*, то есть L(V)V Є V*

Конструктивное описание формального языка осуществляется с помощью формальных систем, называемых формальными порождающими грамматиками.

1)Формальной порождающей грамматикой G – формальная система, описываемая с помощью четырёх формальных объектов{V, W, P, S}

где V – словарь терминал. сим-в; W – словарь нетерминал. сим-в , причём V ∩ W = Ø; P – множество правил вида φ -> ψ, где φ и ψ Є (V U W)*; S- аксиомы грамматики.

2)Цепочка β выводится из цепочки α, если они представимы в виде:

β = α φ δ α = λ ψ δ и в грамматике существует правило вида ψ ->

φ.

3)Цепочка β называется выводимой из α, если существует конечная цепочка вывода: α ->ξ0; ξ0 -> ξ1; ξ1-> ξ2; …, ξn -> β, где ξi – цепочка нетерминальных символов Є (V* U W*).

α ->G β: β выводима из α в грамматике G.

4)Языком L , порождаемым грамматикой G, называется множество всех цепочек, выводимых из аксиомы грамматики.

5)Грамматики G1 и G2 эквивалентны, когда они порождают один и тот же язык.

Операции над языками.

Пусть L0 - язык, заданный грамматикой G0={V0, W0, R0, I0}, a Є V0;

L1язык, заданный грамматикой G1={V1, W1, R1, I1};

1. Подстановка.

Подстановка языка L в L0 вместо символа а–операция, сопоставляющая языкам L0 и L1 язык L=L0 (а->L1), состоящий из всех цепочек языка L0, в которых вместо символа а подставлена некоторая цепочка из L1.

Пример:

431

ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР

 

L=L0(a->L1)

 

 

L=L0(a1->L1, a2->L2…ak->Lk)

 

L0=(a,(a+a), (a+a+a) )

 

L1=(b, bb, bbb )

 

 

L=(b,bb,…,b+b,(b+b+b)…)

 

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

 

 

Конкатенация языков L0

и L1это операция, сопоставляющая

языки L0 и L1 языку

L, который

состоит из цепочек,

представляющих собой парное сцепление цепочек языков L0 и

L1.

Пример:

L0=(a,(a+a),…) L1=(b, bb, …)

L=L0L1={ab, abb,…, (a+a)b, (a+a)bb…}

Введем обозначение кратной конкатенации

L&L= L^2; L&L&L= L^3; …

3. Итерация.

Язык L*, его подмножество будет определяться равенством

L* = [ ε ] U L U L2 U .. U Ln = { ε } U n i=1 Li

Замечание: не следует смешивать язык, содержащий ε (пустую цепочку), с пустым языком, не содержащим ни одной цепочки. ε – не есть отсутствие правил. Язык, содержащий ε – не пустой.

2. Двоичное кодирование переменных и функций трехзначной логики

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

(0,1, … k-1)

Определение: функция, принимающая значения от 0 до k-1, аргументы которой также принимают значения из этого множества, называется функцией k-значной логики. Булева функция - функция двухзначной логики.

В k-значной логике выделяется ряд элементарных функций, например:

1)

квазиконьюнкция

& min(x1, x2 )

 

 

 

 

 

 

2)

квазидизъюнкция

 

max( x1 , x2 )

3)

сумма по модулю k

 

{x1 x2}mod

k

4)

произведение по модулю k

{x1 x2}mod

k

432

{max(x1, x2)+1}mod k
~x {x 1}mod k

ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР

значение функции равно остатку от деления произведения x1 x2 на k

5) функция Вебба

6) цикл (циклическое отрицание)

 

 

 

 

 

7) функция инверсии

 

x k 1 x

 

 

 

 

8)

характеристические

k 1, x

 

 

 

 

(x)

0, x

(0 k 1)

 

 

 

 

 

 

функции:

1, x0, x

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

В 3-х значной логике функциями const являются 0,1,2.

x1

x2

&

V

x1 x2

 

 

0

0

0

0

1

0

0

0

1

0

1

2

1

0

0

2

0

2

0

2

0

1

0

0

1

2

1

0

1

1

1

1

2

2

1

1

2

1

2

0

0

2

2

0

0

2

0

2

0

2

1

1

2

0

0

2

2

2

2

2

0

1

1

Закодируем аргументы следующим образом: 0 = 00, 1 = 01, 2 = 10.

Для записи и передачи любого троичного переменного необходимо использовать две двоичные переменные v1, v2. При этом функции Ψi(x) будут кодироваться следующим образом:

X

1

2

Ψ0

Ψ0’’

Ψ1

Ψ1’’

Ψ2

Ψ2’’

0

0

0

0

1

0

0

0

0

1

0

1

0

0

0

1

0

0

2

1

0

0

0

0

0

0

1

*

1

1

*

*

*

*

*

*

удобно доопределить Ψi’ на наборе <1,1> нулями, тогда получим:

Ψ0’=Ψ1’=Ψ2’=0; Ψ0’’= ¬ v1 & ¬v2; Ψ1’’= ¬ v1 & v2; Ψ2’’= v1 & ¬v2;

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

433

ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР

Практически в полупроводниковых схемах для трехзначной функции положительным потенциалом считается потенциал >= 1.5 В.

Нулевым потенциалом считается потенциал по модулю <=0.6. Отрицательным - потенциал <= -1.5 В.

Пример: рассмотрим кодирование ф-й X1 X2, X1 X2

X1

 

X2

 

X1 X2

X1 X2

V1

V2

V3

V4

f1

f2

f3

f4

0

0

0

0

0

0

0

0

0

0

0

1

0

1

0

0

0

0

1

0

1

0

0

0

0

0

1

1

*

*

*

*

0

1

0

0

0

1

0

0

0

1

0

1

1

0

0

1

0

1

1

0

0

0

1

0

0

1

1

1

*

*

*

*

1

0

0

0

1

0

0

0

1

0

0

1

0

0

1

0

1

0

1

0

0

1

0

1

1

0

1

1

*

*

*

*

1

1

0

0

*

*

*

*

1

1

0

1

*

*

*

*

1

1

1

0

*

*

*

*

1

1

1

1

*

*

*

*

Таким образом, функцию f(x1,x2) можно представить следующим образом:

f(x1,x2)=<f1(v1,v2,v3,v4), f2(v1,v2,v3,v4)>

f1= ¬v1 & ¬v2 & v3 & ¬v4 V ¬v1 & v2 & ¬v3 & v4 V v1 & ¬v2 & ¬v3 & ¬v4

f2= ¬v1 & ¬v2 & ¬v3 & v4 V ¬v1 & v2 & ¬v3 & ¬v4 V v1 & ¬v2 & v3 & ¬v4

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

 

¬v1

 

v1

 

¬v4

v2

 

 

*

 

*

 

 

 

 

 

1

*

*

 

*

v4

 

 

*

*

 

 

 

 

 

 

 

¬v2

 

1

 

 

1

¬v4

 

¬v3

v3

 

 

¬v3

 

 

 

 

434

ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР

Для того чтобы минимизировать слабо определенную функцию в карте Карно проставляют специальный знак в местах характерных наборам, на которых функция не определена, затем * меняют на 1 в тех клетках, составленные прямоугольники из которых уменьшили бы число конъюнкций, дизъюнкций и отрицаний.

Для примера следует: f1 = v2& v4 V v3 & ¬v1 & ¬v2 V ¬v3 & ¬v4 & v1

Аналогично составляются функции f2, f3, f4.

3. Перечислить способы представления конечного автомата

Конечный автомат – система объектов M (Q,T,V , ,) , в

которой Q {q1 ,...qn }, T {a1 ,...am }, V {V1 ,...Ve }, Q, T, V –

конечные множества (алфавиты), Q - алфавит состояний, Т - входной алфавит, V - выходной алфавит, - функция переходов

(определяется как отображение множества Q T в множество

, т.е. : Q T Q ), - функция выходов

: Q T V ,

т.е. отображается на множестве V.

 

1. Ориентированный граф (граф состояний), в котором состояния - вершины графа, дуги – переходы между состояниями. Вершины помечаются номерами состояний автомата. Дуги, соединяющие вершины, помечаются входным символом, который вызвал переход автомата из I-го состояния в j-тое, а также выходным символом, который устанавливается на выходе автомата в результате этого перехода.

a3, V3

q2

 

q4

 

 

 

 

a3,

6

 

q1

 

 

 

 

 

 

 

q3

a4, V4

 

 

a7, V8

 

 

q5

q6

 

 

 

ai - символы входного алфавита, вызывающие переход; Vi - символы выходного алфавита;

qi – состояния автомата.

Детерминированным называется автомат, граф перехода которого не содержит вершин, имеющих одинаково помеченные дуги.

2. Таблица переходов

435

ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР

Строки – состояния автомата. Столбцы - символы входного алфавита Клетки таблицы заполняют состояния, в которые переходит

автомат под действием входных символов, а также символы выходного алфавита, соответствующие реакции автомата на входной символ.

Пример:

 

a1

a2

a3

a4

a5

a6

q1

q2, V1

q3, V2

 

 

 

 

q2

 

 

q4, V3

 

 

 

q3

 

 

 

q5, V4

 

 

q4

 

 

q5, V5

 

q5, V6

 

q5

 

 

 

 

 

q6, V7

q6

 

 

 

 

 

 

3. Матрицей переходов

Матрица переходов представляет собой квадратную матрицу, строки и столбцы которой соответствуют внутренним состояниям автомата. Клетки матрицы заполняются входными символами ak ,при которых автомат переходит из состояния qi в состояние qj, а также выходными символами, соответствующими паре (ak, qi).

Пример:

 

q1

q2

q3

q4

q5

q6

q1

 

a1, V1

a2, V2

 

 

 

q2

 

 

 

a3, V3

 

 

q3

 

 

 

 

a4, V4

 

q4

 

 

 

 

a3, V5

 

 

 

 

 

a5, V6

 

 

 

 

 

 

 

q5

 

 

 

 

 

a6, V7

q6

 

 

 

 

 

 

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

436

ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР

4. Определение недетерминированного и конечного автомата

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

конечный автомат может решать ряд легких задач компиляции. Лексический блок почти всегда строится на основе конечного автомата.

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

моделирование конечного автомата требует фиксированного объема памяти, что упрощает проблемы, связанные с управлением памятью.

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

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

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

Конечный автомат – это формальная система, которая создаётся с помощью следующих объектов:

конечным множеством входных символов;

конечным множеством состояний;

функцией переходов, которая каждой паре (входной символ, текущее состояние) ставит в соответствие новое состояние;

начальное состояние;

подмножество состояний, выделенных в качестве допускающих или заключительных;

Итак, детерминированным конечным автоматом (ДКА) называется устройство, описываемое следующими параметрами: Q – конечное множество состояний.

Σ – конечное множество входных символов.

437

ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР

δ– функция перехода. Аргументы – состояние и входной символ, результат – состояние.

q0 – начальное состояние, принадлежит Q.

F – множество допускающих состояний, является подмножеством

Q.

И функционирующие следующим образом: Автомат начинает работу в состоянии q0.

Если автомат находится в состоянии qi, а на вход поступает символ b, то автомат переходит в состояние δ(qi, b). Определение недетерминированного конечного автомата (НКА) практически полностью повторяет приведённое выше определение ДКА. Отличий всего два:

δ– функция перехода. Аргументы – состояние и входной символ, результат – множество состояний (возможно – пустое).

Если автомат находится в состоянии qi, а на вход поступает символ b, то автомат переходит во множество состояний δ(qi, b). Если автомат находится во множестве состояний {qi}, то он переходит во множество состояний, получаемое объединением множеств δ(qi, b).

НКА тоже распознаёт цепочки символов, цепочка считается допустимой, если после её обработки множество состояний, в котором оказался автомат, содержит хотя бы одно допускающее. Таким образом, НКА также задаёт некоторый язык.

Важным аспектом является преобразование недетерминированного конечного автомата к детерминированному. Недетерминированные конечноавтоматные распознаватели могут быть двух типов: либо существует переход, помеченный пустой цепочкой ε, либо из одного состояния выходят несколько переходов, помеченных одним и тем же символом (возможны оба случая).

Алгоритм построения эквивалентного детерминированного конечного автомата.

Приведение недетерминированного автомата к автомату без ε- переходов.

Определение: ε-замыканием состояния s называется множество всех состояний, которые достижимы из s без подачи входного сигнала. Множеством состояний полученного автомата являются ε-замыкания состояний автомата с ε-переходами.

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

438

ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР

состояния искомого автомата выбрать множество начальных(конечных) состояний исходного автомата.

Примеры: ДКА

таблица переходов

 

 

0

1

->

q0

q1

q0

*

q1

q1

q0

НеДКА

таблица переходов

 

 

0

1

->

q0

{ q0,q1}

{q0}

 

q1

{q2}

Ø

*

q2

Ø

Ø

5. Программная реализация логических функций

Представление автомата схемой, состоящей из логических элементов наиболее исследованный вид структурной реализации автомата. Другой её вид – реализация программ. Программа реализует логические функции f(x1,x2...,xn) = y, если для любого двоичного набора δ = (δ1,…,δn) при начальном состоянии элементов памяти x1= δ1, x2= δ2,..,xn= δn программа за конечное число шагов останавливается и в ячейке y лежит величина y = f(δ1, δ2,..δn)

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

число команд в тексте программы;

объем промежуточной памяти;

439

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