русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Фибоначчиево слияние


Дата добавления: 2015-01-16; просмотров: 450; Нарушение авторских прав


В действительности, можно полностью устранить копирование, если начать с fn отрезков в файле F1 и fn-1 отрезков в F2, где fn и
fn-1 – последовательные числа Фибоначчи. Таблица, приведенная ниже, поясняет процесс слияния. Элемент таблицы вида A*Bобозначает А отрезков относительной длины В.

Фаза F1 F2 F3 Число обрабатываемых отрезков
13*1 8*1 Пусто
5*1 Пусто 8*2
Пусто 5*3 3*2
3*5 2*3 Пусто
1*5 Пусто 2*8
Пусто 1*13 1*8
1*21 Пусто Пусто

Суммарное число проходов по данным составит , в то время, как двухфазная процедура затратила бы 8 проходов. Эту идею можно обобщить на N входных файлов, используя N-1 –путевое слияние. В качестве примера рассмотрим случай N=6 при числе начальных отрезков 129.

Фаза F1 F2 F3 F4 F5 F6 Число отрезков
31*1 30*1 28*1 24*1 16*1 -
15*1 14*1 12*1 8*1 - 16*5
7*1 6*1 4*1 - 8*9 8*5
3*1 2*1 - 4*17 4*9 4*5
1*1 - 2*33 3*17 2*9 2*5
- 1*65 1*33 1*17 1*9 1*5
1*129 - - - - -

Чтобы метод работал, необходимо после каждой фазы иметь точное "фибоначчиево" распределение отрезков по файлам. Для этого некоторые файлы можно дополнить фиктивными отрезками нулевой длины. Точное фибоначчиево распределение можно получить, прокручивая рассмотренную схему в обратном порядке, циклически переставляя содержимое файлов и игнорируя выходной файл. При N=6 имеем следующее распределение отрезков:



 

 

Уровень F1 F2 F3 F4 F5 Сумма
. . . . . . .
n an bn cn dn en tn
n+1 an+bn an+cn an+dn an+en an tn+4an

 

Из приведенной таблицы следует, что

en=an-1
dn=an-1+en-1=an-1+an-2
cn=an-1+dn-1=an-1+an-2+an-3
bn=an-1+cn-1=an-1+an-2+an-3+an-4
an=an-1+bn-1= an-1+an-2+an-3+an-4+an-5,

где a0=1 и an=0 при n<0.

Числа Фибоначчи порядка р определяются правилами:

при n ³ p,

при 0 £ n £ p-2, =1.

В общем случае, если положить p=N-1, распределения отрезков по лентам в многофазном слиянии для N файлов аналогичным образом соответствуют числам Фибоначчи порядка р. В точном распределении n-го уровня в k-ом файле будет

начальных отрезков для 1 £ k £ p, а общее количество начальных отрезков во всех файлах составит



<== предыдущая лекция | следующая лекция ==>
Многопутевое слияние и выбор с замещением | Каскадное слияние


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.159 сек.