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

Course

.pdf
Скачиваний:
10
Добавлен:
28.03.2015
Размер:
1.03 Mб
Скачать

 

¾»q0

-

b

 

¾»q2

¾»q3

¤

¾»q1

 

¶³

a

 

j

¶³

 

 

µ´

 

¾ b

 

 

 

 

Y a

 

µ´

½¼]

 

½¼K

 

½¼ ½¼]

b

a

 

 

a

b

a

a b

 

U

 

 

?

 

U

U

 

¾»q4

 

¾»q5

 

¾»q6

¾»q7

 

 

b

-

¾ b

 

¾ a

¶³

 

½¼ ½¼K

 

 

µ´

 

 

½¼ ½¼

 

 

 

 

a; b

 

 

 

 

 

 

 

Рис. 2:

 

 

 

q = pM (q; e) 2 F $ F 3 pM (q0; e) = q0

и отношение »0 имеет 2 класса

эквивалентности, равные fq0; q2g и fq1; q4; q5; q6g14.

 

Далее, для q; q0 2 Q0

q »1 q0 тогда и только тогда, когда q »0 q0 и

(8a 2 §)(±(q; a) »0

±(q0; a)). В связи с первым условием имеет смысл

проверять, что q »1 q0, только если q »0 q0. Имеем ±(q0; a) = q1 »0 q1 =

±(q2; a) и ±(q0; b) = q4 »0 q6 = ±(q2; b), так что q0 »1 q2. Для состояния

q

 

имеем

±(q

; a) = q

 

0 q0

= ±(q4; a)

,

±(q5; a) = q5

0 q2

= ±(q6; a)

и

 

5

 

 

5

0

 

5

 

 

 

1 q4; q1; q6

 

 

±(q

; b) = q

 

 

q2 = ±(q1; b)

и, значит,

 

q5

. Для состояния

q1

 

 

5

; b) = q

5

 

 

 

 

q4; q6

 

 

±(q

 

 

0

q5 = ±(q4; b) = ±(q6; b)

и

q1

1

. Наконец,

±(q4; a) =

 

 

1

 

 

2

 

 

 

 

 

 

 

q0

»0 q2 = ±(q6; a), ±(q4; b) = q5 »0 q5 = ±(q6; b) и q4 »1 q6. Таким образом,

отношение »1 имеет 4 класса эквивалентности: fq0; q2g, fq1g, fq4; q6g и

fq5g.

Для вычисления »2 надо проверить всего 2 пары состояний. Для q0; q2

имеем ±(q0; a) = q1 »1 q1 = ±(q2; a) и ±(q0; b) = q4 »1 q6 = ±(q2; b), из чего следует q0 »2 q2. Для q4; q6 ±(q4; a) = q0 »1 q2 = ±(q6; a), ±(q4; b) = q5 »1 q5 = ±(q6; b) и q4 »2 q6. Значит, эквивалентности »2 и »1 совпадают друг

14Какой бы автомат мы ни минимизировали, фактор-множество Q0=»0 всегда равно ffq 2 Q0 : q 2 F g; fq 2 Q0 : q 62F gg n f?g.

21

с другом и с эквивалентностью ».

Состояниями автомата M0 = hQ00; §; ±0; s0; F 0i (то есть элементами множества Q00), эквивалентного автомату M и содержащему минимальное число состояний, будут классы эквивалентности », равные p0 =

fq0; q2g, p1 = fq1g, p2 = fq4; q6g и p3 = fq5g (см. рисунок 3). Начальным состоянием M0 будет s0 = p0, так как p0 3 q0 и q0 является начальным

состоянием автомата M. Множество конечных состояний F 0 будет равно fp0g, так как p0 является единственным элементом Q00, состоящим из конечных состояний автомата M. Осталось задать ±0. Так как q0 2 p0 и

±(q0; a) = q1 2 p1, ±(q0; b) = q4 2 p2, то ±0(p0; a) = p1 и ±0(p0; b) = p2. Аналогично ±0(p1; a) = p3, ±0(p1; b) = p0 (q1 2 p0 и ±(q1; a) 2 p3, ±(q1; b) 2 p0);

±0(p2; a) = p0, ±0(p2; b) = p3 (q4 2 p2 и ±(q4; a) 2 p0, ±(q4; b) 2 p3); ±0(p3; a) =

±0(p3; b) = p3 (q5 2 p3 и ±(q5; a); ±(q5; b) 2 p3). Построение автомата M0

закончено. Упомянутое при описании алгоритма минимизации взаимнооднозначное соответствие между Q0=» и §¤=»L сопоставляет элементу p0 класс [e]»L , элементу p1 класс [a]»L , элементу p2 класс [b]»L и элементу p3 класс [aa]»L = [bb]»L .

¤

¾»p0

a

j ¾»p1

¶³

b

 

 

µ´Y

½¼

 

½¼K

 

b

a

 

a

 

 

 

a; b

 

U

 

N ?

 

¾»p2

b

- ¾»p3

 

½¼

 

½¼

Рис. 3:

Ниже (на странице 38) мы увидим, как при помощи теоремы 2 можно доказать, что некоторые языки не распознаются никаким конечным автоматом.

Чтобы продолжить изучение детерминированных конечных автоматов, введем одно полезное обобщение этого понятия.

22

Определение 8 Недетерминированным конечным автоматом называется произвольная пятерка hQ; §; ¢; s; F i, такая что Q и § конечные множества, s 2 Q, F µ Q, а ¢ является подмножеством [feg)£Q.

Терминология, связанная с недетерминированными конечными автоматами, почти такая же, как и для детерминированных. Так, § в данном выше определении алфавит автомата, Q множество состояний и т. д. Отличие состоит в том, что ¢ это теперь не функция, а отношение переходов. Если для q1; q2 2 Q, a 2 § тройка hq1; a; q2i принадлежит ¢, то мы говорим, что автомат может перейти из состояния q1 в состояние q2 под действием символа a. Если тройка hq1; e; q2i принадлежит ¢, то мы говорим, что автомат может совершить скачок из состояния

q1 в состояние q2.

Также как и детерминированные конечные автоматы, недетерминированные автоматы принято изображать в виде диаграмм. Аналогично случаю детерминированных автоматов, рисуются кружочки, соответствующие состояниям автомата, конечные состояния обводятся еще одним кружочком, напротив начального состояния ставится знак в виде маленького треугольника. Потом рисуются стрелки, соответствующие всем возможным переходам и скачкам. То есть, для каждой пары состояний q1; q2 и для каждого символа a 2 § если автомат может перейти из состояния q1 в состояние q2 под действием символа a, то на диаграмме рисуется стрелка из кружочка, обозначающего состояние q1 в кружочек, обозначающий состояние q2, помеченная символом a. Если же автомат может совершить скачок из состояния q1 в состояние q2, то из q1 в q2 рисуется стрелка, помеченная символом e.

При рассмотрении диаграмм становится очевидным, что детерминированные конечные автоматы это, по сути, частный случай недетерминированных. На диаграмме детерминированного конечного автомата из каждого состояния выходит ровно столько стрелок, сколько символов в алфавите, по одной на каждый символ. Если же автомат недетерминированный, то из одного состояния может выходить несколько стрелок, помеченных одним и тем же символом, а может и не выходить ни одной. Кроме того, появляются стрелки, помеченные символом пустого слова. Можно считать, что недетерминированный автомат hQ; §; ¢; s; F i является детерминированным, если для каждой пары q1 2 Q, x 2 § существует единственное состояние q2 2 Q, такое что hq1; x; q2i 2 ¢ (в этом случае q2 равно значению функции переходов от аргументов q1 и x) и не

23

существует пары состояний hq1; q2i, такой что тройка hq1; e; q2i принадлежит ¢.

Недетерминированные автоматы также, как и детерминированные, в ходе своей работы последовательно, буква за буквой, читают подаваемые им на вход слова и в зависимости от последней прочитанной буквы меняют свое состояние. Предположим, что в какой-то момент времени автомат находится в состоянии q и читает букву x. Если существуют какие-то состояния, в которые автомат может перейти из состояния q под действием буквы x, то он выбирает одно из них и переходит в него. Если таких состояний нет, то он ”зависает”, то есть переходит в неопределенное состояние и перестает читать какие-либо дальнейшие символы. Кроме того, он может в любой момент, не читая никакого символа, совершить скачок из одного состояния в другое, если такой скачок возможен (т. е. на диаграмме есть стрелка, помеченная символом e, которая ведет из первого состояния во второе).

Недетерминированные автоматы, аналогично детерминированным, служат для распознавания слов. Мы говорим, что автомат распознает слово, если он, стартуя из начального состояния и прочитав данное слово может, следуя описанным выше правилам, остановится в одном из конечных состояний и при этом не ”зависнуть”. Другими словами, можно считать, что недетерминированный конечный автомат обладает определенной ”интуицией”; читая слово, он на некотором шаге в процессе чтения может встать перед выбором из нескольких альтернатив: некоторые из вариантов выбора могут привести его в одно из конечных состояний, а некоторые нет. Автомат, как бы предвидя исход своей работы, всегда выбирает одну из тех альтернатив, которые могут привести его в одно из конечных состояний. Если же все варианты одинаково плохи, то он выбирает какой-то один из них, неважно какой.

Дадим формальное определение. Мы говорим, что недетерминированный конечный автомат hQ; §; ¢; s; F i может перейти из состояния q 2 Q в состояние p 2 Q под действием слова w 2 §¤, если существует конечная последовательность q0; q1; : : : ; qn элементов из Q и функция

t : f0; : : : ; ng ! N, такие что q0 = q, qn = p, t(0) = 0, t(n) = jwj и для каждого i < n либо t(i + 1) = t(i) и hqi; e; qi+1i 2 ¢, либо t(i + 1) = t(i) + 1

и hqi; (w)t(i+1); qi+1i 2 ¢.

Соотнося это формальное определение с данным выше неформальным, можно сказать, что q0; : : : ; qn это последовательность состояний, которые автомат проходит, читая слово w, а t(i) это количество букв

24

слова w, которые автомат успел прочитать к моменту достижения состо-

яния qi.

Множество всех состояний, в которые недетерминированный конечный автомат M = hQ; §; ¢; s; F i может перейти из состояния q 2 Q под действием слова w 2 §¤, мы обозначаем через PM (q; w). Мы говорим, что этот автомат распознает слово w, если множество PM (s; w) содержит хотя бы один элемент из F , то есть если PM (s; w) \ F =6 ?. Также, как и раньше, для недетерминированного конечного автомата M через L(M) обозначим множество всех слов, которые этот автомат распознает.

Недетерминированные конечные автоматы являются мощным и удобным инструментом в исследовании вопроса о распознаваемости языков. Пусть, например, требуется построить автомат, который распознает язык алфавита § = fa; b; cg, состоящий из слов, заканчивающихся на три одинаковые буквы. Построить с ходу детерминированный автомат для этого языка достаточно трудно (хотя, безусловно, возможно, как следует из доказанной ниже теоремы 3). Конструкция же недетерминированного автомата очевидна, достаточно обратиться к приведенной ниже диаграмме.

 

 

 

 

 

 

¾»a -

¾»

 

 

 

 

 

 

 

 

 

½¼

 

 

 

 

 

 

¡

½¼

 

 

 

 

 

 

 

¡µ

 

@

 

 

 

 

 

 

 

 

 

 

@

 

 

a;

b;

c

a¡

 

 

 

 

@a

 

 

 

 

 

 

¡

 

¾»b -

@

@

 

 

 

 

 

 

 

®

 

¡

 

 

 

 

¾»¡ b -

¾»b -@R¾»

¤

 

 

 

 

 

 

 

 

 

 

¶³

@

 

 

 

 

 

 

¡µ µ´

½¼ ½¼ ½¼

¡ ½¼

 

 

 

 

@

 

 

 

 

c¡

 

 

 

 

 

 

@c

 

 

 

 

 

 

 

 

 

 

@

@R¾»c -

¡

 

 

 

 

 

 

@

¡

 

 

 

 

 

 

 

¾»¡

 

 

 

 

 

 

 

 

 

½¼

 

 

 

 

 

 

 

½¼

 

 

Рис. 4:

Распознавая слово, изображенный на этой диаграмме автомат оста-

25

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

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

На первый взгляд может показаться, что языков, которые распознаются недетерминированными конечными автоматами, должно быть больше, чем языков, которые распознаются детерминированными. Однако это не так. Как показывает доказанная ниже теорема 3, недетерминированность в плане распознавания языков ничего не добавляет.

Лемма 2 Если M = hQ; §; ¢; s; F i недетерминированный конечный

автомат, w 2 §¤ и a 2 §, то справедливо равенство PM (s; wa) =

S

q2PM (s;w) PM (q; a).

Доказательство. Покажем, что если состояние p принадлежит левой части равенства, то оно принадлежит и правой. Пусть p 2 PM (s; wa). Тогда существует последовательность q0; : : : ; qn элементов из Q и функция

t : f0; : : : ; ng ! N, такие что q0 = s, qn = p, t(0) = 0, t(n) = jwaj и для каждого i < n либо t(i + 1) = t(i) и hqi; e; qi+1i 2 ¢, либо t(i + 1) = t(i) + 1

и hqi; (wa)t(i+1); qi+1i 2 ¢. Из определения ясно, что функция t принимает на множестве f0; : : : ; ng все значения из множества f0; : : : ; jwajg15.

Значит, существует k < n, такое что t(k) = jwj.

15Пусть это не так. Рассмотрим минимальное m 6 jwaj, которое не попадает в

26

Пусть q = qk. Имеем q 2 PM (s; w), так как последовательность q0; : : : ; qk и функция t, рассматриваемая как функция из f0; : : : ; kg в N, удовлетворяют всем условиям определения. Теперь рассмотрим последовательность q00 ; : : : ; qn0 ¡k и функцию t0 : f0; : : : ; n ¡ kg ! N, такие что для каждого i 6 n¡k qi0 = qk+i и t0(i) = t(k +i)¡jwj. Эта последовательность и эта функция дают нам, согласно определению, что p 2 PM (q; a). Раз p 2 PM (q; a) для некоторого q 2 PM (s; w), то, значит, p принадлежит правой части равенства.

Теперь докажем обратное включение. Если p 2

q2PM (s;w) PM (q; a),

то для некоторого q

2

PM (s; w) имеем p

2

PM (q; a). Зафиксируем одно

 

 

 

S

из таких q. Так как q

2 PM (s; w), то существует последовательность

состояний q00 ; : : : ; qk0 и функция t0 : f0; : : : ; kg ! N, такие что q00 = s, qk0 = q, t0(0) = 0, t0(k) = jwj и для каждого i < k либо t0(i + 1) = t0(i)

и hqi0; e; qi0+1i 2 ¢, либо t0(i + 1) = t0(i) + 1 и hqi0; (w)t0(i+1); qi0+1i 2 ¢. Раз p 2 PM (q; a), то существует последовательность состояний q000; : : : ; qm00 и

функция t00 : f0; : : : ; mg ! N, такие что q000 = q, qm00 = p, t00(0) = 0, t00(m) = 1 и для каждого i < m либо t00(i + 1) = t00(i) и hqi00; e; qi00+1i 2 ¢, либо t00(i +

1) = t00(i) + 1 и hqi00; (a)t00(i+1); qi00+1i 2 ¢. Рассмотрим последовательность

q

; : : : ; q

 

и функцию

t :

f

0; : : : ; k + m

g ! N, такие что для

i

6

k q

= q0

0

 

k+m

6

 

 

 

 

i

i

и

t(i) = t0(i)

, а для

k < i

k+m q

= q00

 

t(i) = t00

(i

¡

k)+

w

j. Проверив

 

 

 

 

i

i¡k и

 

 

j

 

 

все свойства определения, убеждаемся, что эта последовательность дает нам включение p 2 PM (s; wa). ¤

Следствие 1 Для недетерминированного конечного автомата M = hQ; §; ¢; s; F i, слов w; v 2 §¤ и символа a 2 § если PM (s; w) = PM (s; v), то PM (s; wa) = PM (s; va).

Доказательство. Очевидно. ¤

Теорема 3 Язык распознается некоторым детерминированным конечным автоматом тогда и только тогда, когда он распознается некоторым недетерминированным конечным автоматом.

область значений функции t. Поскольку t(0) = 0, то m > 0. Так как m минимальное число с указанным свойством, то существует i 6 n, для которого t(i) = m ¡ 1. Пусть i0 максимальное среди всех таких i. Так как t(n) = jwaj > m > m ¡ 1 = t(i0), то i0 =6 n. Если t(i0 + 1) = t(i0), то i0 не может быть максимальным. Если же t(i0 + 1) = t(i0) + 1, то, поскольку t(i0) = m ¡ 1, t(i0 + 1) = m и m попадает в область значений функции t. Противоречие.

27

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

Пусть M = hQ; §; ¢; s; F i недетерминированный конечный автомат. Построим детерминированный конечный автомат M0, такой что

L(M0) = L(M).

В качестве множества состояний автомата M0 возьмем множество Q0 = fPM (s; w) : w 2 §¤g. Несмотря на то, что w в этом определении пробегает бесконечное семейство §¤, множество Q0 конечно, так как все его элементы являются подмножествами Q, а таких подмножеств конечное число. Начальным состоянием автомата M0 будет являться элемент Q0, равный PM (s; e), который мы обозначим через S. Множеством конечных состояний будет F 0 µ Q0, равное fPM (s; w) : w 2 §¤ и PM (s; w) \F 6= ?g. Алфавитом, естественно, будет §. Осталось определить функцию переходов ±.

Пусть P = PM (s; w) 2 Q0 и a 2 §. Полагаем ±(P; a) равным PM (s; wa). Это определение корректно, так как если P = PM (s; v) для некоторого

слова v, отличного от w, то, по следствию 1, PM (s; wa) = PM (s; va). Определение автомата M0 закончено. Чтобы доказать, что он обла-

дает требуемым свойством, сначала покажем, что для любого w 2 §¤ pM0(S; w) = PM (s; w). Для пустого слова этот факт непосредственно следует из определений. Пусть для слова w это верно и a 2 §. Тогда

pM0(S; wa) = ±(pM0(S; w); a) = ±(PM (s; w); a) = PM (s; wa). Первое равенство в этой цепочке следует из определения функции pM0, второе из

индукционного предположения, третье из определения функции ±. Осталось показать, что для любого w 2 §¤ pM0(S; w) 2 F 0 тогда и

только тогда, когда PM (s; w) \ F 6= ?16. Эта эквивалентность почти очевидна: действительно, pM0(S; w) = PM (s; w) и PM (s; w) принадлежит F 0 тогда и только тогда, когда пересечение этого множества с множеством F непусто. ¤

Теперь, после доказательство теоремы 3, мы можем говорить просто об языках, распознаваемых автоматами, не уточняя, какие именно автоматы, детерминированные или недетерминированные, имеются в виду17.

16Напомним, что по определению автомат M0 распознает слово w тогда и только тогда, когда pM0(S; w) 2 F 0. Опять же по определению автомат M распознает слово w тогда и только тогда, когда PM (s; w) \ F 6= ?.

17Доказательство теоремы 3 дает нам также алгоритм построения по недетермини-

28

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

Языки алфавита § это прежде всего подмножества §¤, то есть множества, и к ним применимы те же операции, что и к множествам. Так, например, пересечением языков L1 и L2 будет язык, состоящий из слов, которые входят как в L1, так и в L2. Объединением L1 и L2 будет язык, состоящий из слов, которые входят либо в L1, либо в L2, либо в оба языка сразу. Кроме того, если L язык алфавита §, то язык §¤ n L = fw 2 §¤ : w 62Lg мы называем дополнением к языку L (относительно алфавита §18) и обозначаем L.

Кроме теоретико-множественных операций есть еще две операции, которые применимы только к языкам, а не к произвольным множествам. Это операции конкатенации и навешивания звездочки Клини.

Пусть L1; L2 µ §¤ языки алфавита §. Конкатенацией языков L1 и L2 называется язык fwv : w 2 L1; v 2 L2g, то есть язык, словами которого будут конкатенации слов языка L1 со словами языка L2.

Для определения звездочки Клини нам понадобится ввести ряд промежуточных обозначений. Пусть L язык алфавита §. Для каждого натурального числа n определим по индукции язык Ln:

1.L0 = feg;

2.Ln+1 = LnL.

Пусть теперь L¤ = Sn2N Ln. Мы говорим, что язык L¤ получается из языка L навешиванием звездочки Клини. Словами языка L¤ будут всевозможные конкатенации слов языка L. Отметим, что каким бы не был язык L, даже равным пустому множеству, язык L¤ обязательно содержит пустое слово19.

рованному конечному автомату эквивалентного ему детерминированного. Этот алгоритм будет подробно разбираться на семинарских занятиях.

18Алфавит, относительно которого рассматривается дополнение к языку, здесь важен. Действительно, один и тот же язык можно рассматривать как язык разных алфавитов: например, некоторого алфавита § и более широкого алфавита §0 ¾ §. Значения операции дополнения в этих случаях будут различны. Однако у нас, как правило, алфавит будет фиксирован и ясен из контекста. В связи с этим мы будем говорить просто о дополнениях, не упоминая алфавит.

19Начиная разговор об языках, мы не случайно обозначили множество всех слов

29

Теперь определим множество регулярных языков. Для этого нам опять придется ввести ряд промежуточных подмножеств. Пусть § некоторый фиксированный конечный алфавит. Определим для каждого натурального числа n множество языков Rn:

1.R0 = f?g [ ffag : a 2 §g20;

2.Rn+1 = Rn [ fL1 [ L2 : L1; L2 2 Rng [ fL1L2 : L1; L2 2 Rng [fL¤ : L 2 Rng.

Пусть теперь R = Sn2N Rn. Множество R называется множеством регулярных языков, а его элементы регулярными языками.

Чуть менее формально можно определить множество регулярных языков следующим образом. Имеется набор базовых языков: это те языки, которые являются элементами R0. Так, например, если § = fa1; : : : ; ang, то базовыми языками будут ?, fa1g; : : : ; fang. Регулярные же языки это те, которые можно получить из базовых при помощи операций объединения, конкатенации и навешивания звездочки Клини.

Поскольку R равно объединению Rn-ых, то для каждого регулярного языка существует Rn, которому он принадлежит. Пусть L регулярный язык и n наименьшее натуральное число, такое что L 2 Rn. Тогда язык L можно получить из базовых при помощи n упомянутых выше операций21. Пусть, например, § = fa; bg. Тогда элементами R1 будут 3 базовых языка и языки, которые можно получить при помощи одной операции из

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

20Не следует путать ? и f?g. Первое это пустое множество, у него вообще нет элементов. Второе это множество, состоящее из одного элемента; этим элементом является пустое множество. Аналогично, a и fag не одно и то же: a это символ или однобуквенное слово, а fag это множество слов, то есть язык, состоящий из одного однобуквенного слова. R0 это не множество слов, а множество языков; его элементами являются языки. В частности, элементами R0 являются: язык, не содержащий ни одного слова (то есть ?) и языки, состоящие из одного однобуквенного слова.

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

30

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