Декартовы деревья
план-конспект урока по информатике и икт (11 класс)
Конспект урока.
Тема: декартовые деревья
класс 11 технический
Предворительно пройденные темы: бинарные деревья, Heap/
Скачать:
Вложение | Размер |
---|---|
3.1._konspekt_uroka_dekartovye_derevya.docx | 271.35 КБ |
Предварительный просмотр:
МУНИЦИПАЛЬНОЕ БЮДЖЕТНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
«ГИМНАЗИЯ № 3» ГОРОДСКОГО ОКРУГА САМАРА
Конспект урока
Информатики и ИКТ
в 11 классе
Тема урока: «Декартовы деревья»
Дата проведения урока: 20.03.2019 г.
Класс: 11
Работу подготовил:
учитель информатики
высшей категории
Сметанников Андрей Леонидович
МУНИЦИПАЛЬНОЕ БЮДЖЕТНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
«ГИМНАЗИЯ № 3» ГОРОДСКОГО ОКРУГА САМАРА
Конспект урока
Информатики и ИКТ
в 11 классе
Тема урока: «Декартовы деревья»
Дата проведения урока: 20.03.2019 г.
Класс: 11
Работу подготовил:
учитель информатики
высшей категории
Сметанников Андрей Леонидович
Самара, 2019 г.
Цели урока:
- создание условий для формирования ключевых компетенций;
- развитие творческих способностей учащихся;
- научить оценки эффективности используемой структуры данных;
- познакомить с существующими методами поиска.
Формируемые УУД:
Познавательные действия:
- Умение строить бинарное дерево с оценкой эффективности его использования.
- Анализ структуры данных «Кучи».
- Умения построения декартового дерева.
Регулятивные действия:
- Находить варианты решения различных проблем связанных с структурой данных предназначенных для поиска информации.
- Освоение способов решения проблем творческого и поискового характера.
Коммуникативные действия:
- Умение обсуждать и анализировать методы поиска в иерархический структурах данных.
- Задавать вопросы, слушать и отвечать на вопросы других.
Основные понятия: бинарное дерево, heap, декартово дерево.
Межпредметные связи: математика.
Организация пространства: лекционно-практическая работа.
Оснащение рабочего места педагога: компьютер.
ХОД УРОКА
- Из пройденных тем известно, что при использовании двоичного дерева для поиска повышает эффективность до O(N)=log2N
- При работе со структурой может произойти вырождение дерева, например:
Не сложно заметить, что эффективности можно оценить как O(N)=N.
- При решении этой проблемы можно совместить две структуры данных: бинарное дерево («где левые легкие, а праве тяжелые»), и «кучу» рассмотренную на прошлых уроках («где родитель тяжелее детей»). Для этого добавляется к каждому узлу дерева случайное число, создавая пару (ключ, значение), по ключу строиться бинарное дерево, а по значению куча.
Где красным- ключ, синим значение.
- Операции работы с деревом:
Lookup(x). Вывод данных. O(N)=log2N.
Insert(x,value). Вставка элемента. O(N)=log2N.
Delete(x) (log 𝑛) ). Удаление элемента. O(N)=log2N.
Split(x). Деление на два дерева. O(N)=[log2N, N].
Merge(T1, T2) ). Объединение деревьев. O(N)= [log2N, N].
- Split(x).
Случай 1: ключ разбиения x > ключа корня (root.x)
- Левое поддерево T1 совпадает с левым поддеревом корня T
- Для нахождения правого поддерева T1 необходимо разбить правое поддерево T по ключу x на T1R и T2R и взять T1R
- Дерево T2 совпадает с деревом T2R
Случай 2: ключ разбиения x < ключа корня
- Правое поддерево T2 совпадает с правым поддеревом корня T
- Для нахождения левого поддерева T2 необходимо разбить левое поддерево T по ключу x на T1L и T2L и взять T2L
- Дерево T1 совпадает с деревом T1L
// дерево с корнем t делим на два с корнями a b причем все ключи а больше k, b меньше.
void split(treapNode* t, int k, treapNode* &a, treapNode* &b) {
if (t==NULL)
a = b = NULL;
else
if (t->k < k) { split(t->r, k, t->r, b); a = t; } else { split(t->l, k, a, t->l); b = t; }
}
- Merge(T1,T2).
Случай 1: Приоритет y корня T1 > приоритета y корня T2
- Корень дерева T1 становится корнем T
- Левое поддерево T1 становится левым поддеревом T
- Правое поддерево T – это объединение правого поддерева T1 и дерева T2
Случай 2: Приоритет y корня T1 < приоритета y корня T2
- Корень дерева T2 становится корнем T
- Правое поддерево T2 становится правым поддеревом T
- Левое поддерево T – это объединение T1 и левого поддерева T2
// соединяем два дерева в одно a,b - указатели на корни соединяемых деревьев все ключи k от а больше ключей b
// на соединенное дерево указывает а
treapNode * merge(treapNode *a, treapNode *b) {
if (a==NULL || b==NULL) return a ? a : b;
if (a->p > b->p) { a->r = merge(a->r, b); return a;}
else { b->l = merge(a, b->l); return b; }
}
- Insert (T1,X).
void insert(int key, int value) {
treapNode *cur = new treapNode(key, value), *rootL, *rootR;
split(root, key, rootL, rootR);
root = merge(rootL, cur);
root = merge(root, rootR); }
- Remove(Key)
void remove(int key) {
treapNode *rootL, *rootM, *rootR;
split(root, key, rootL, rootM);
split(rootM, key + 1, rootM, rootR);
root = merge(rootL, rootR);
delete(rootM);
}
- Вывод дерева
struct treapNode {
int k, p, v; // k - ключ для бинарного дерева поиска p - для кучи (пирамиды), v - значение
treapNode *l, *r;
treapNode(int key, int value) { k = key; v = value; p = rand(); l = r = NULL;}
};
По теме: методические разработки, презентации и конспекты
Тест "Определение декартовых координат"
Тест по теме "Опредение декартовых координат" предназначен для контроля знаний по геометрии в 10 классе по теме "Декартовы координаты в пространстве"...
Введение декартовых координат в пространстве
Разбирайте...
Презентация " Декартова система координат"
Презентация для урока геометрии....
Конспект урока "введение декартовых координат в пространстве"
Конспект урока по геометрии в 10 кл "Введение декартовых координат в пространстве". Тип урока: урок изучения нового материала....
"Введение декартовых координат в пространстве"
Методическая разработка урока по геометрии в 10 кл "Введение декартовых координат в пространстве". Тип урока: урок изучения нового материала....
урок геометрии в 8 классе "Декартовы координаты на плоскости"
Обобщающий урок геометрии по теме "Декартовы координаты на плоскости". Разработку данного урока можно использовать при работе с любым УМК....
Занятие на тему "Введение декартовых координат"
Данный урок разработан в рамках программы по математике для обучающихся первого курса по специальности парикмахер. Разработка включает в себя: презентацию и план урока....