🗊Презентация АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации

Нажмите для полного просмотра!
АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №1АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №2АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №3АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №4АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №5АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №6АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №7АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №8АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №9АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №10АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №11АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №12АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №13АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №14АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №15АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №16АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №17АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №18АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №19АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №20АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №21АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №22АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №23АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №24АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №25АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №26АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №27АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №28АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №29АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №30АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №31АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №32АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №33АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №34АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №35АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №36АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №37АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №38АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №39АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №40АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №41АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №42АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №43АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №44АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №45АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №46АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №47АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации, слайд №48

Содержание

Вы можете ознакомиться и скачать презентацию на тему АА-деревья. Операции для работы с АА-деревом и алгоритмы их реализации. Доклад-сообщение содержит 48 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





АА-деревья
Работу выполнила студентка группы ИМ15-05Б Просяник Юлия
Руководитель Олейников Борис Васильевич
Описание слайда:
АА-деревья Работу выполнила студентка группы ИМ15-05Б Просяник Юлия Руководитель Олейников Борис Васильевич

Слайд 2





Содержание
Определение структуры
Связь АА-деревьев с другими деревьями поиска
История структуры
Свойства АА-деревьев
Основные операции для работы с АА-деревом и алгоритмы их реализации :
Операция “skew”
Операция “split”
Вставка в АА-дерево
Удаление из АА-дерева
Список используемой литературы и источников
Описание слайда:
Содержание Определение структуры Связь АА-деревьев с другими деревьями поиска История структуры Свойства АА-деревьев Основные операции для работы с АА-деревом и алгоритмы их реализации : Операция “skew” Операция “split” Вставка в АА-дерево Удаление из АА-дерева Список используемой литературы и источников

Слайд 3





Определение структуры
АА-дерево – это форма сбалансированного дерева, которое используется для хранения и эффективного извлечения упорядоченных данных. АА-деревья названы по имени их изобретателя ­ Арне Андерссона (Arne Andersson).
АА-дерево является разновидностью красно-черного дерева, но в отличие от красно-черных деревьев, красные узлы на АА-дереве  могут быть добавлены только как правый потомок, благодаря этому, АА-деревья обладают повышенной простотой кодирования.
Описание слайда:
Определение структуры АА-дерево – это форма сбалансированного дерева, которое используется для хранения и эффективного извлечения упорядоченных данных. АА-деревья названы по имени их изобретателя ­ Арне Андерссона (Arne Andersson). АА-дерево является разновидностью красно-черного дерева, но в отличие от красно-черных деревьев, красные узлы на АА-дереве могут быть добавлены только как правый потомок, благодаря этому, АА-деревья обладают повышенной простотой кодирования.

Слайд 4





Связь АА-деревьев с красно-черными и 
2-3 деревьями
Физически, красно-черное дерево похоже на 2-3 дерево (обычное бинарное дерево поиска, где некоторые узлы имеют две ссылки, а некоторые узлы группируются в пары и пара содержит три ссылки) (рис. 1) с дополнительными ограничениями. Если представлять узел с двумя ключами в виде двух отдельных узлов, и красить все одиночные узлы и «левые половины» двойных узлов в черный цвет, а «правые половины» ­ в красный, то мы получим обычное красно-черное дерево, в котором все красные вершины являются правыми потомками черных (рис. 2).
Описание слайда:
Связь АА-деревьев с красно-черными и 2-3 деревьями Физически, красно-черное дерево похоже на 2-3 дерево (обычное бинарное дерево поиска, где некоторые узлы имеют две ссылки, а некоторые узлы группируются в пары и пара содержит три ссылки) (рис. 1) с дополнительными ограничениями. Если представлять узел с двумя ключами в виде двух отдельных узлов, и красить все одиночные узлы и «левые половины» двойных узлов в черный цвет, а «правые половины» ­ в красный, то мы получим обычное красно-черное дерево, в котором все красные вершины являются правыми потомками черных (рис. 2).

Слайд 5





Связь АА-деревьев с красно-черными и 
2-3 деревьями
Возвращаясь к АА-деревьям, вместо того, чтобы раскрашивать узлы в красный и черный цвета, введем понятие уровень узла (level). Будем считать, что все листья дерева имеют уровень 1 (единица), а уровень родителя имеет уровень на единицу больший, чем уровень потомка. Красные узлы находятся на уровне своих родителей. То есть, в качестве исключения будем считать, что если потомок является правым потомком, то его уровень может быть равен уровню родительского узла (рис. 3).
Описание слайда:
Связь АА-деревьев с красно-черными и 2-3 деревьями Возвращаясь к АА-деревьям, вместо того, чтобы раскрашивать узлы в красный и черный цвета, введем понятие уровень узла (level). Будем считать, что все листья дерева имеют уровень 1 (единица), а уровень родителя имеет уровень на единицу больший, чем уровень потомка. Красные узлы находятся на уровне своих родителей. То есть, в качестве исключения будем считать, что если потомок является правым потомком, то его уровень может быть равен уровню родительского узла (рис. 3).

Слайд 6





Пример АА-дерева
Описание слайда:
Пример АА-дерева

Слайд 7





История структуры
AA-дерево было придумано Арне Андерссоном в 1993 году, который первым решил, что для упрощения балансировки дерева нужно ввести понятие уровень (level) вершины. Если представить себе дерево растущим сверху вниз от корня (то есть «стоящим на листьях»), то уровень любой листовой вершины будет равен 1. В своей работе Арне Андерссон приводит простое правило, которому должно удовлетворять AA-дерево:
    К одной вершине можно присоединить другую    вершину того же уровня, но только одну и только    справа (одна правая одноуровневая связь).
Описание слайда:
История структуры AA-дерево было придумано Арне Андерссоном в 1993 году, который первым решил, что для упрощения балансировки дерева нужно ввести понятие уровень (level) вершины. Если представить себе дерево растущим сверху вниз от корня (то есть «стоящим на листьях»), то уровень любой листовой вершины будет равен 1. В своей работе Арне Андерссон приводит простое правило, которому должно удовлетворять AA-дерево: К одной вершине можно присоединить другую вершину того же уровня, но только одну и только справа (одна правая одноуровневая связь).

Слайд 8





Свойства АА-дерева
Уровень листа равен 1.
Уровень левого потомка строго меньше уровня узла.
Уровень правого потомка не больше уровня узла.
Уровень потомков правого потомка строго меньше уровня узла.
Каждый узел с уровнем больше 1 имеет двух потомков.
Описание слайда:
Свойства АА-дерева Уровень листа равен 1. Уровень левого потомка строго меньше уровня узла. Уровень правого потомка не больше уровня узла. Уровень потомков правого потомка строго меньше уровня узла. Каждый узел с уровнем больше 1 имеет двух потомков.

Слайд 9






Описание структуры АА-дерева :

type
	pl_tree = ^el_tree;
	el_tree = record
		key : integer;
		level : byte;         //уровень вершины (у листьев 1)
		left, right : pl_tree;  
	end;
Описание слайда:
Описание структуры АА-дерева : type pl_tree = ^el_tree; el_tree = record key : integer; level : byte; //уровень вершины (у листьев 1) left, right : pl_tree; end;

Слайд 10






 ОСНОВНЫЕ ОПЕРАЦИИ ДЛЯ РАБОТЫ С АА-ДЕРЕВОМ И АЛГОРИТМЫ ИХ РЕАЛИЗАЦИИ 

Для балансировки АА-дерева нужно всего 2 (две) различных операции. Нетрудно их понять из правила «одна правая одноуровневая связь» : это устранение левой связи на одном уровне и устранение двух правых связей на одном уровне.
Эти операции в оригинальной работе Арне Андерссона названы “skew”(«перекос») и “split”(«расщепление») соответственно.
Описание слайда:
ОСНОВНЫЕ ОПЕРАЦИИ ДЛЯ РАБОТЫ С АА-ДЕРЕВОМ И АЛГОРИТМЫ ИХ РЕАЛИЗАЦИИ Для балансировки АА-дерева нужно всего 2 (две) различных операции. Нетрудно их понять из правила «одна правая одноуровневая связь» : это устранение левой связи на одном уровне и устранение двух правых связей на одном уровне. Эти операции в оригинальной работе Арне Андерссона названы “skew”(«перекос») и “split”(«расщепление») соответственно.

Слайд 11





“skew” ­ устранение левой связи на одном уровне
Данная операция устраняет горизонтальную левую связь при помощи вращения узла вправо каждый раз, когда горизонтальная левая связь найдена. 
На рисунке горизонтальная стрелка обозначает связь между вершинами одного уровня, а наклонная (вертикальная) — между вершинами разного уровня
Описание слайда:
“skew” ­ устранение левой связи на одном уровне Данная операция устраняет горизонтальную левую связь при помощи вращения узла вправо каждый раз, когда горизонтальная левая связь найдена. На рисунке горизонтальная стрелка обозначает связь между вершинами одного уровня, а наклонная (вертикальная) — между вершинами разного уровня

Слайд 12





Код процедуры “skew”
procedure Skew_t (var t : pl_tree);
var
	tmp : pl_tree;
begin
	if t <> nil then
	begin
	if  t^.left <> nil then 
	begin
		if t^.left^.level = t^.level then
		begin   {rotate right}
			tmp := t;
			t := tmp^.left;
			tmp^.left := t^.right;
			t^.right := tmp;
		end;
	end;
end;
end;
Описание слайда:
Код процедуры “skew” procedure Skew_t (var t : pl_tree); var tmp : pl_tree; begin if t <> nil then begin if t^.left <> nil then begin if t^.left^.level = t^.level then begin {rotate right} tmp := t; t := tmp^.left; tmp^.left := t^.right; t^.right := tmp; end; end; end; end;

Слайд 13





“split” ­ устранение двух правых связей на одном уровне
Данная операция устраняет две последовательные правые горизонтальные связи при помощи вращения узла влево и увеличения уровня среднего узла на единицу
Описание слайда:
“split” ­ устранение двух правых связей на одном уровне Данная операция устраняет две последовательные правые горизонтальные связи при помощи вращения узла влево и увеличения уровня среднего узла на единицу

Слайд 14





Код процедуры “split”
procedure Split_t (var t : pl_tree);
var
	tmp : pl_tree;
begin
	if t <> nil then
	begin
	if t^.right <> nil then
	begin
		if t^.right^.right <> nil then
		begin
			if t^.right^.right^.level = t^.level then
			begin   {rotate left}
				tmp :=t;
				t := tmp^.right;
				tmp^.right := t^.left;
				t^.left := tmp;
				Inc (t^.level);
			end;
		end;
	end;
end;
end;
Описание слайда:
Код процедуры “split” procedure Split_t (var t : pl_tree); var tmp : pl_tree; begin if t <> nil then begin if t^.right <> nil then begin if t^.right^.right <> nil then begin if t^.right^.right^.level = t^.level then begin {rotate left} tmp :=t; t := tmp^.right; tmp^.right := t^.left; t^.left := tmp; Inc (t^.level); end; end; end; end; end;

Слайд 15





Алгоритм вставки
Добавляем новый узел на 1(первый) уровень;
Вызываем операцию “skew”;
Вызываем операцию “split”.
Вставка узла может:
Не нарушить правило построения АА-дерева, например               ;
Нарушить правило «левого потомка», например           Исправление может быть сделано простым поворотом “skew”;
Нарушить правило «двух правых потомков» , например              . Исправление может быть сделано расщеплением “split”; 
Вставка узла может повлечь за собой серию поворотов и расщеплений, например         .
Описание слайда:
Алгоритм вставки Добавляем новый узел на 1(первый) уровень; Вызываем операцию “skew”; Вызываем операцию “split”. Вставка узла может: Не нарушить правило построения АА-дерева, например ; Нарушить правило «левого потомка», например Исправление может быть сделано простым поворотом “skew”; Нарушить правило «двух правых потомков» , например . Исправление может быть сделано расщеплением “split”; Вставка узла может повлечь за собой серию поворотов и расщеплений, например .

Слайд 16





Вставка элемента в дерево
procedure Insert_Node (var root_f : pl_tree; x : integer);
begin 
	if root_f = nil then
	begin
		new (root_f);
		root_f^.left := nil;
		root_f^.right := nil;
		root_f^.key := x;
		root_f^.level := 1;
	end else 
	begin
		if root_f^.key > x then
			Insert_Node (root_f^.left,x)
		else if root_f^.key < x then
			Insert_Node (root_f^.right,x);
	end;
	Skew_t (root_f);
	Split_t (root_f);
end;
Описание слайда:
Вставка элемента в дерево procedure Insert_Node (var root_f : pl_tree; x : integer); begin if root_f = nil then begin new (root_f); root_f^.left := nil; root_f^.right := nil; root_f^.key := x; root_f^.level := 1; end else begin if root_f^.key > x then Insert_Node (root_f^.left,x) else if root_f^.key < x then Insert_Node (root_f^.right,x); end; Skew_t (root_f); Split_t (root_f); end;

Слайд 17





Пример вставки
Вставляем : 6;

уровень 3


уровень 2

                                                                уровень 1
Описание слайда:
Пример вставки Вставляем : 6; уровень 3 уровень 2 уровень 1

Слайд 18





Пример вставки
Вставляем : 6; 2;

уровень 3


уровень 2

                                                                уровень 1
Описание слайда:
Пример вставки Вставляем : 6; 2; уровень 3 уровень 2 уровень 1

Слайд 19





Пример вставки
Вставляем : 6; 2;

уровень 3


уровень 2

                                                                уровень 1
Описание слайда:
Пример вставки Вставляем : 6; 2; уровень 3 уровень 2 уровень 1

Слайд 20





Пример вставки
Вставляем : 6; 2; 8;

уровень 3


уровень 2

                                                                уровень 1
Описание слайда:
Пример вставки Вставляем : 6; 2; 8; уровень 3 уровень 2 уровень 1

Слайд 21





Пример вставки
Вставляем : 6; 2; 8;

уровень 3


уровень 2

                                                                уровень 1
Описание слайда:
Пример вставки Вставляем : 6; 2; 8; уровень 3 уровень 2 уровень 1

Слайд 22





Пример вставки
Вставляем : 6; 2; 8; 16;

уровень 3


уровень 2

                                                                уровень 1
Описание слайда:
Пример вставки Вставляем : 6; 2; 8; 16; уровень 3 уровень 2 уровень 1

Слайд 23





Пример вставки
Вставляем : 6; 2; 8; 16; 10;

уровень 3


уровень 2

                                                                уровень 1
Описание слайда:
Пример вставки Вставляем : 6; 2; 8; 16; 10; уровень 3 уровень 2 уровень 1

Слайд 24





Пример вставки
Вставляем : 6; 2; 8; 16; 10;

уровень 3


уровень 2

                                                               
 уровень 1
Описание слайда:
Пример вставки Вставляем : 6; 2; 8; 16; 10; уровень 3 уровень 2 уровень 1

Слайд 25





Пример вставки
Вставляем : 6; 2; 8; 16; 10;

уровень 3


уровень 2

                                                               
 уровень 1
Описание слайда:
Пример вставки Вставляем : 6; 2; 8; 16; 10; уровень 3 уровень 2 уровень 1

Слайд 26





Пример вставки
Вставляем : 6; 2; 8; 16; 10; 1.

уровень 3


уровень 2

                                                               
 уровень 1
Описание слайда:
Пример вставки Вставляем : 6; 2; 8; 16; 10; 1. уровень 3 уровень 2 уровень 1

Слайд 27





Пример вставки
Вставляем : 6; 2; 8; 16; 10; 1.

уровень 3


уровень 2

                                                               
 уровень 1
Описание слайда:
Пример вставки Вставляем : 6; 2; 8; 16; 10; 1. уровень 3 уровень 2 уровень 1

Слайд 28





Пример вставки
Дерево полностью сбалансировано!

уровень 3


уровень 2

                                                               
 уровень 1
Описание слайда:
Пример вставки Дерево полностью сбалансировано! уровень 3 уровень 2 уровень 1

Слайд 29





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

Слайд 30





Удаление элемента
procedure Delete_Node (var root_f : pl_tree; 			newkey : integer); 
begin
	if root_f <> nil then
	begin
	// 1. спускаемся вниз и запоминаем last и deleted
		last := root_f;
		if newkey < root_f^.key then
		      Delete_Node (root_f^.left, newkey)
		else 
		begin
		      deleted := root_f;
		      Delete_Node (root_f^.right,  newkey);
		end;
 
		// 2. удаляем элемент, если найден
		if (root_f = last) and (deleted <> nil) and 	(newkey = deleted^.key) 
		then
		begin
		      deleted^.key := root_f^.key;
		      deleted := nil;
		      root_f := root_f^.right;
		      dispose (last);
		end
		else if (Get_Level(root_f^.left) < 	(Get_Level(root_f) - 1)) or
		(Get_Level(root_f^.right) < 	(Get_Level(root_f) - 1)) then
		begin
		// 3. выполняем балансировку при 	движении вверх
		        Dec (root_f^.level);
	                      if root_f^.right^.level > root_f^.level  	        then 
		        root_f^.right^.level := root_f^.level;
		        Skew_t (root_f);
		        Skew_t (root_f^.right);
		        Skew_t (root_f^.right^.right);
		        Split_t (root_f);
		        Split_t (root_f^.right);
		end;
	           end;
            end;
Описание слайда:
Удаление элемента procedure Delete_Node (var root_f : pl_tree; newkey : integer); begin if root_f <> nil then begin // 1. спускаемся вниз и запоминаем last и deleted last := root_f; if newkey < root_f^.key then Delete_Node (root_f^.left, newkey) else begin deleted := root_f; Delete_Node (root_f^.right, newkey); end;   // 2. удаляем элемент, если найден if (root_f = last) and (deleted <> nil) and (newkey = deleted^.key) then begin deleted^.key := root_f^.key; deleted := nil; root_f := root_f^.right; dispose (last); end else if (Get_Level(root_f^.left) < (Get_Level(root_f) - 1)) or (Get_Level(root_f^.right) < (Get_Level(root_f) - 1)) then begin // 3. выполняем балансировку при движении вверх Dec (root_f^.level); if root_f^.right^.level > root_f^.level then root_f^.right^.level := root_f^.level; Skew_t (root_f); Skew_t (root_f^.right); Skew_t (root_f^.right^.right); Split_t (root_f); Split_t (root_f^.right); end; end; end;

Слайд 31





Пример удаления
Удаляем узел 1. 




уровень 3
уровень 2
уровень 1
Описание слайда:
Пример удаления Удаляем узел 1. уровень 3 уровень 2 уровень 1

Слайд 32





Пример удаления
Удаляем узел 1. 
Узел 2, теперь нарушает свойство №5 (Каждый узел с уровнем больше, чем единица имеет двух потомков).

уровень 3

уровень 2
уровень 1
Описание слайда:
Пример удаления Удаляем узел 1. Узел 2, теперь нарушает свойство №5 (Каждый узел с уровнем больше, чем единица имеет двух потомков). уровень 3 уровень 2 уровень 1

Слайд 33





Пример удаления
Уменьшаем уровень узла 2. 
Теперь уровень узла 4 отличается от уровня его левого потомка(узла 2) больше, чем на единицу.
уровень 3
уровень 2
уровень 1
Описание слайда:
Пример удаления Уменьшаем уровень узла 2. Теперь уровень узла 4 отличается от уровня его левого потомка(узла 2) больше, чем на единицу. уровень 3 уровень 2 уровень 1

Слайд 34





Пример удаления
Уменьшаем уровень узлов 4 и 10.
У узла 4 теперь есть две последовательные правые связи.
У узла 10 теперь появилась левая связь на одном уровне.
уровень 3

уровень 2

уровень 1
Описание слайда:
Пример удаления Уменьшаем уровень узлов 4 и 10. У узла 4 теперь есть две последовательные правые связи. У узла 10 теперь появилась левая связь на одном уровне. уровень 3 уровень 2 уровень 1

Слайд 35





Пример удаления
Необходимо вызвать три раза операцию “skew” и два раза операцию “split”.

уровень 3

уровень 2
уровень 1
Описание слайда:
Пример удаления Необходимо вызвать три раза операцию “skew” и два раза операцию “split”. уровень 3 уровень 2 уровень 1

Слайд 36





Пример удаления
Skew ( node 4 );                 //ничего не происходит


уровень 3
уровень 2
уровень 1
Описание слайда:
Пример удаления Skew ( node 4 ); //ничего не происходит уровень 3 уровень 2 уровень 1

Слайд 37





Пример удаления
Skew ( node 4 );                 //ничего не происходит
Skew ( node 4^.right );    //узел 10

уровень 3
уровень 2
уровень 1
Описание слайда:
Пример удаления Skew ( node 4 ); //ничего не происходит Skew ( node 4^.right ); //узел 10 уровень 3 уровень 2 уровень 1

Слайд 38





Пример удаления
Skew ( node 4 );                 //ничего не происходит
Skew ( node 4^.right );    //узел 10


уровень 3
уровень 2
уровень 1
Описание слайда:
Пример удаления Skew ( node 4 ); //ничего не происходит Skew ( node 4^.right ); //узел 10 уровень 3 уровень 2 уровень 1

Слайд 39





Пример удаления
Skew ( node 4 );                 //ничего не происходит
Skew ( node 4^.right );    //узел 10
Skew ( node 4^.right^.right );     //снова узел 10


уровень 3
уровень 2
уровень 1
Описание слайда:
Пример удаления Skew ( node 4 ); //ничего не происходит Skew ( node 4^.right ); //узел 10 Skew ( node 4^.right^.right ); //снова узел 10 уровень 3 уровень 2 уровень 1

Слайд 40





Пример удаления
Skew ( node 4 );                                //ничего не происходит
Skew ( node 4^.right );                  //узел 10
Skew ( node 4^.right^.right );     //снова узел 10



уровень 3

уровень 2
уровень 1
Описание слайда:
Пример удаления Skew ( node 4 ); //ничего не происходит Skew ( node 4^.right ); //узел 10 Skew ( node 4^.right^.right ); //снова узел 10 уровень 3 уровень 2 уровень 1

Слайд 41





Пример удаления
Skew ( node 4 );                                //ничего не происходит
Skew ( node 4^.right );                  //узел 10
Skew ( node 4^.right^.right );     //снова узел 10
Split ( node 4 );                                //появится новый корень поддерева


уровень 3

уровень 2
уровень 1
Описание слайда:
Пример удаления Skew ( node 4 ); //ничего не происходит Skew ( node 4^.right ); //узел 10 Skew ( node 4^.right^.right ); //снова узел 10 Split ( node 4 ); //появится новый корень поддерева уровень 3 уровень 2 уровень 1

Слайд 42





Пример удаления
Skew ( node 4 );                                //ничего не происходит
Skew ( node 4^.right );                   //узел 10
Skew ( node 4^.right^.right );     //снова узел 10
Split ( node 4 );                             //появится новый корень поддерева


уровень 3

уровень 2
уровень 1
Описание слайда:
Пример удаления Skew ( node 4 ); //ничего не происходит Skew ( node 4^.right ); //узел 10 Skew ( node 4^.right^.right ); //снова узел 10 Split ( node 4 ); //появится новый корень поддерева уровень 3 уровень 2 уровень 1

Слайд 43





Пример удаления
Skew ( node 4 );                                //ничего не происходит
Skew ( node 4^.right );                   //узел 10
Skew ( node 4^.right^.right );     //снова узел 10
Split ( node 4 );                             //появится новый корень поддерева
Split (  node 6^.right);                //узел 8

уровень 3

уровень 2
уровень 1
Описание слайда:
Пример удаления Skew ( node 4 ); //ничего не происходит Skew ( node 4^.right ); //узел 10 Skew ( node 4^.right^.right ); //снова узел 10 Split ( node 4 ); //появится новый корень поддерева Split ( node 6^.right); //узел 8 уровень 3 уровень 2 уровень 1

Слайд 44





Пример удаления
Skew ( node 4 );                                //ничего не происходит
Skew ( node 4^.right );                   //узел 10
Skew ( node 4^.right^.right );     //снова узел 10
Split ( node 4 );                             //появится новый корень поддерева
Split (  node 6^.right);                //узел 8

уровень 3
уровень 2
уровень 1
Описание слайда:
Пример удаления Skew ( node 4 ); //ничего не происходит Skew ( node 4^.right ); //узел 10 Skew ( node 4^.right^.right ); //снова узел 10 Split ( node 4 ); //появится новый корень поддерева Split ( node 6^.right); //узел 8 уровень 3 уровень 2 уровень 1

Слайд 45





Пример удаления
Дерево полностью сбалансировано!




уровень 3
уровень 2
уровень 1
Описание слайда:
Пример удаления Дерево полностью сбалансировано! уровень 3 уровень 2 уровень 1

Слайд 46





Заключение
В своей работе Арне Андерссон делает вывод, что если сравнивать по производительности четыре типа двоичных деревьев поиска, а именно:
АВЛ-дерево;
красно-черное дерево;
2-3-дерево;
АА-дерево, 
     то можно сделать вывод, что сбалансированность (и скорость поиска) лучше всего у АВЛ-дерева, чуть хуже у красно-черного дерева, и еще чуть хуже у 2-3-дерева и эквивалентного ему по структуре АА-дерева.
Алгоритмы балансировки очень сложны для АВЛ-дерева и 2-3-дерева, поэтому на практике предпочитают использовать красно-черные и АА-деревья. Самые простые алгоритмы вставки и удаления узлов у АА-дерева, однако, если вставка и удаление элементов встречаются гораздо реже, чем поиск, то красно-черные деревья будут предпочтительнее .
Преимуществом АА-дерева по сравнению с красно-черным деревом является то, что алгоритмы, используемые при вставке и удалении узла в АА-дереве,  а также балансировка дерева существенно проще, чем в красно-черном дереве.
Описание слайда:
Заключение В своей работе Арне Андерссон делает вывод, что если сравнивать по производительности четыре типа двоичных деревьев поиска, а именно: АВЛ-дерево; красно-черное дерево; 2-3-дерево; АА-дерево, то можно сделать вывод, что сбалансированность (и скорость поиска) лучше всего у АВЛ-дерева, чуть хуже у красно-черного дерева, и еще чуть хуже у 2-3-дерева и эквивалентного ему по структуре АА-дерева. Алгоритмы балансировки очень сложны для АВЛ-дерева и 2-3-дерева, поэтому на практике предпочитают использовать красно-черные и АА-деревья. Самые простые алгоритмы вставки и удаления узлов у АА-дерева, однако, если вставка и удаление элементов встречаются гораздо реже, чем поиск, то красно-черные деревья будут предпочтительнее . Преимуществом АА-дерева по сравнению с красно-черным деревом является то, что алгоритмы, используемые при вставке и удалении узла в АА-дереве, а также балансировка дерева существенно проще, чем в красно-черном дереве.

Слайд 47






СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ И ИСТОЧНИКОВ

 AA-Tree – http://en.wikipedia.org/wiki/AA_tree.
AA-Tree или простое бинарное дерево – http://habrahabr.ru/post/110212 .
АА-дерево – http://www.proteus2001.narod.ru/gen/txt/8/aa.html.
A. Andersson. Balanced search trees made simple. Algorithms and Data Structures, pages 60-71, 1993 .
Сайт А.А.Кубенского для студентов ИТМО‎. Алгоритмы и структуры данных. Презентация лекции по 2-3 деревьям и АА-деревьям ­ https://drive.google.com/file/d/0BFHfoLzonFRMVoxb1d1RXBSblU/view?pref=2&pli=1 .
 David Babcock. York College of Pennsylvania. CS 350 : Data Structures AA Trees .
The European Journal for the Informatics Professional UPGRADE http://www.upgrade-cepis.org Vol. V, No. 5, October 2004 .
Описание слайда:
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ И ИСТОЧНИКОВ  AA-Tree – http://en.wikipedia.org/wiki/AA_tree. AA-Tree или простое бинарное дерево – http://habrahabr.ru/post/110212 . АА-дерево – http://www.proteus2001.narod.ru/gen/txt/8/aa.html. A. Andersson. Balanced search trees made simple. Algorithms and Data Structures, pages 60-71, 1993 . Сайт А.А.Кубенского для студентов ИТМО‎. Алгоритмы и структуры данных. Презентация лекции по 2-3 деревьям и АА-деревьям ­ https://drive.google.com/file/d/0BFHfoLzonFRMVoxb1d1RXBSblU/view?pref=2&pli=1 . David Babcock. York College of Pennsylvania. CS 350 : Data Structures AA Trees . The European Journal for the Informatics Professional UPGRADE http://www.upgrade-cepis.org Vol. V, No. 5, October 2004 .

Слайд 48





Спасибо за внимание!
Описание слайда:
Спасибо за внимание!



Похожие презентации
Mypresentation.ru
Загрузить презентацию