Android-приложение для поиска дешевых авиабилетов: play.google.com
Главная -> Теоретическое программирование

0 1 2 3 4 5 6 7 8 9 [10] 11

Компоненты

Комбинация

Посмотрев на фильтр Регуляр, мы видим, что он отвергает комбинацию 3, потому что f2 гарантирует, что п отображается на некоторый х1 из Х1-0браз (fl), тогда как f5 означает, что на х1 будет отображен некоторый п из Л, причем п < п, тогда как -(д:1)< -(д:/). Аналогично второй фильтр Регуляр отвергает комбинацию 4, и остаются только 1 и 2.

Здесь мы видим природу нового определения, введенного для Слияния в уравнениях (5) и (6) в разд. 5.3.1. Добавление дополнительного фильтра Регуляр в определении Перест в точности эквивалентно невключению этих комбинаций в декартово произведение. У нас нет необходимости исключительно в целях синтеза давать точное определение Регуляр, как мы делали это В уравнении 5.3.1(6). Вместо этого мы могли бы произвольно решить не включать эти комбинации и определить Регуляр как первоначально неопределенный фильтр, задаваемый этими опу. щениями. Очень похожее явление можно наблюдать при синтезе Сортировки Взбалтыванием и Сортировки Обменом в разд. 5.4.1.

Кроме ТОГО, теперь мы можем дать некоторое обоснование уравнению (7). Перест (Х) требует, чтобы каждый элемент X появлялся в первой позиции некоторого массива. Фильтр Регуляр гарантирует, что в первых позициях Слияния! {{nlxl} -\- fj, <,п2х2}+12, п + N) могут появиться только xl и х2 и, поэтому,

Теперь нужно исследовать, какая комбинация f\ выдержит все три фильтра. Будет проще, если мы представим это в виде таблицы. В приведенной здесь таблице строка с галочкой в / -й позиции означает, что все остальные f[ должны быть Ф, чтобы вся комбинация [] / прошла через рассматриваемый

фильтр.

Сначала рассмотрим фильтр Биект, который гарантирует нам, что составное отношение тотально на всей Области и Образе и задает функцию. Эти соображения дают нам право утверждать, что фильтр Биект пропускает лишь следующие комбинации:



чтобы убедиться, что каждый элемент Х1\}Х2 имеет шанс попасть в первую позицию, для Перест (XJIJХ2) мы должны рассмотреть все е Перест{XI) и все /2е Перест{Х2). Таким образом, «выживут» только два выражения

Cl = {nxl)-]-f6[jf7[jf8

где f6sNX XI, frsNX {х2}, fSs N X Х2

C2 = {nx2) + f5\]f6\}f8

где fSNX {xl), feNX XI, f8 NXX2.

и мы можем перекомбинировать декартово произведение, так что

Cl = {nxl) + fl где flNX{x2 + Xl{]X2) С2 = {пх2) + f2 где f2 N Х{х1 + X1U Х2).

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

Биект {{nxl) -{-fln + N, xl-]-Xl[jx2 + Х2) Биект {fl, N, Xl{jx2-\-X2) Регуляр {{nxl) -f fl, {nlxl) + fl) Регуляр {fl, fl) Регуляр {{nxl) + fl, {п2х2) + f2)

Регуляр {fl, {n2x2) + f2) Биект i{nx2) + f2, n + N, xl -\-XI \J x2-\- X2, < Биект {f2, N,xl-{-Xl\j X2) Регуляр {{nx2) + f2, {nlxl) + fl)

Регуляр{f2, {nlxl) + fl) Регуляр {{nx2) + f2, {п2х2) + f2) <=Регуляр{12, f2).

Таким образом, можно переписать

Слияние! {{nlxl) + , {п2х2) + f2,n + N)

{{nxl) + fl\fl sNXx2 + XlUX2 и Биект {fl, N, x2 + Xl[jX2) и Peгyляp{f}, fl) и Регуляр {fl, {n2x2) + f2)} и {{nx2)-{-f2\f2NXxl + Xl\]X2 и Биект{f2, N, xl+Xl\}X2) и Регуляр {f2, {nlxl)-\-fl) и Регуляр Q2, f2)}.



Вспомнив, что XI - Образ if 1), а Х2 = Образ{12), правую часть можно переписать в виде

{{nxl) -]-fr\flsNX Образ ifl) и Образ {{п2х2) + f2)

и Биект ifl, N, Образ (fl) [] Образ {{п2х2) + f2)) и Регуляр ifl, fl) и Регуляр ifl, {n2x2) + f2} и {{пх2) + f2 \f2sNX Образ ({nlxl) -f ) U Образ {f2)

и Биект if 2, N, Образ {{nix 1)-\-fl) [j Образ (f 2)) и Регуляр {f2, {nlxl)-\-fl) и Регуляр if 2, f2)}

6.5. Имеем

Сорт {X1[]X2)- и Упоряд (Слияние (fl, f2))

и Перест (XI) f2e Перест iX2)

Для свертки с 5.3.2(1) перепишем это как

ч= и Упоряд (Сяuянue(fl, f2)).

tl е Упоряд {Перест {XI)) f2 е Упоряд (Перест (Х2))

Легко видеть, что эта запись законна. Надо лишь показать, что для любой е Перест (XI) я fl ф Упоряд (Перест (XI)) или f2nepecT(X2) и f2 Упоряд(Перест(Х2)), Упоряд(Слия-Hue(fl, f))= Ф.

Но это очевидно, если мы вспомним, что фильтр Регуляр гарантирует, что Слияние не нарушает внутренний порядок или f2, и поэтому если fl или /2 не упорядочены, то и Слияние (f/,/2) не может быть упорядоченным. Более точно, мы имеем

Ф не ynop(fl)=>n{nlxl), (n2x2)fl-

п1<п2 и х2<х1 ® Yf Слияние(fl, f2)

=>(Peгyляp(f, fl)), т. е. Yx3, х4 Образ (fl)

fr(x3)<fr(x4) f-\x3)<f-(x4) Ф и ф=>YfCлuянue(fl, f2)-3{ntxl), {n2x2)f

п1<п2 и х2 < х1 =>не ynop(f), т. е. Упоряд (Слияние (fl, /2)) = Ф.

6.6. СлияниеС ({nlxl) + fl, {п2х2) + /2, п + N)

У по ряд (Слияние! ({nlxl) + fl,

{п2х2) + /2, п + Л))

Конкретизация 5.3.2(6) Упоряд ({{nxl) + I f/ е Слияние! (fl,

{n2x2) + f2, N)}



0 1 2 3 4 5 6 7 8 9 [10] 11



0.0253
Яндекс.Метрика