DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Алгоритм побудови бінарного дерева згортання

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Факультет комп’ютерних наук
Кафедра:
Програмного забезпечення (ПЗ)

Інформація про роботу

Рік:
2008
Тип роботи:
Лабораторна робота
Предмет:
Алгоритми і структури даних
Група:
ПІ
Коротко про документ

Про що ця робота

Звіт з лабораторної роботи присвячено вивченню алгоритму побудови бінарного дерева згортання графу. Робота містить теоретичні відомості, лістинг програми на мові C та протокол її виконання.

У роботі розглядаються

  • Алгоритми і структури даних
  • Бінарне дерево згортання
  • Обробка графіка
  • Динамічний розподіл пам'яті в C
  • Рекурсивний обхід дерева
  • Функції критерію та оптимізація

Зміст і розділи

  1. Теоретичні відомості
  2. Текст програми
  3. Протокол роботи програми
  4. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають програмування та алгоритми.
Викладачі:Викладач кафедри програмного забезпечення

Ключові поняття

бінарне дереводерево згортанняграффункція критеріюдинамічна пам'ятьструктура данихалгоритмрекурсіямовою C

Частина тексту файла (без зображень, графіків і формул):

Міністерство науки і освіти України Національний університет “Львівська політехніка” Інститут комп’ютерних наук та інформаційних технологій кафедра програмного забезпечення Звіт з лабораторної роботи №12 з дисципліни “Алгоритми і структури даних ” Львів 2008 Тема роботи: Алгоритм побудови бінарного дерева згортання Мета роботи: Вивчити та дослідити методи обробки даних. Ознайомитись із алгоритмом побудови бінарного дерева згортання. Виконати лабораторну роботу використавши здобуті знання з методів обробки даних, зокрема алгоритму побудови бінарного дерева згортання. ТЕОРЕТИЧНІ ВІДОМОСТІ Необхідно побудувати дерево згортання Т(Х, F) графу. Множина вершин Х графу належатимуть до 1-го рівня дерева згортання, приймемо Х1 = Х. На першому кроці в множині Х2 маємо групи з двох елементів, для яких функція критерію F приймає екстремальне значення. Утворені групи належать до множини 2-го рівня дерева згортання. На другому кроці формується множина Х3 3-го рівня з елементів множини Х1 і Х2 . Процес продовжується до утворення множини Хk , яка складається з одного елемента – кореня дерева згортання. Алгоритм А А1. Для всіх хi, хj є Х1 визначити функцію критеріюF(хi, хj); А2. Об‘єднати пари елементів хk, хt з найкращим значенням функції критерію F і виключити їх зі списку елементів – кандидатів на об‘єднання. Приклад роботи алгоритму побудови бінарного дерева згортання представлено на рис. 1.  SHAPE \* MERGEFORMAT  d a b a a a e e c c b b f f e d c d adef abcde abcdef abcd abcd 2 2 3 3 2 2 2 2 2 2  Рис. 1. Дерево згортання. Текст програми #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<alloc.h> #include<math.h> #define N 25 struct S* create(int); struct S* create(struct S*, struct S*,float); void clean(struct S*); void find(struct S*, int); int kryterij(struct S*, struct S*); int average(struct S*, struct S*); /*-Struktura-*/ struct S { int a; //Vlasne znachenna struct S* left; //Vk. na livogo syna struct S* right; //Vk. na pravogo syna }; //----------------------------------- void main() { clrscr(); int i, r, j, h=N; int ix, jx, sumx; int mas[N]; /*-Inicializacija-*/ for (i=0;i<N;i++) mas[i]=rand()%41; /*-Pobudova dereva-*/ S* pmas[N]; //Vk. na vershyny for(i=0;i<N;i++) pmas[i]=create(mas[i]);//Budujemo riven structur while(h>1) { sumx=32767; for(i=0;i<N-1;i++) for(j=i+1;j<N;j++) if(pmas[i]!=NULL&&pmas[j]!=NULL) if(kryterij(pmas[i],pmas[j])<sumx) { sumx=kryterij(pmas[i],pmas[j]); ix=i; jx=j; } pmas[ix]=create(pmas[ix],pmas[jx],sumx); pmas[jx]=NULL; h--; } find(pmas[0],0); clean(pmas[0]); getch(); } //------------------------------------ /*-Stvorenna vershyn nyzchogo rivn'a-*/ struct S* create(int a) { struct S* b=(struct S*)malloc(sizeof(struct S)); b->a=a; b->left=NULL; b->right=NULL; return b; } /*-Stvorenn'a vershyn vyschyh rivniv-*/ struct S* create(struct S* a, struct S* b, float sumx) { struct S* c=(struct S*)malloc(sizeof(struct S)); c->left=a; c->right=b; c->a=sumx; return c; } /*-Ochyschenna pam'jati-*/ void clean(struct S* b) { if(b->left!=NULL) delete(b->left); if(b->right!=NULL) delete(b->right); free(b); } int kryterij(struct S *b, struct S *c) { return (int)sqrt(pow(b->a-20,2)+pow(c->a-20,2)); } void find(struct S* b, int depth) { for(int i=0;i<depth;i++) printf(" "); printf("%i\n", b->a); if(b->left!=NULL) find(b->left, depth+1); if(b->right!=NULL) find(b->right, depth+1); } int average(struct S*b, struct S*c) { return (b->a+c->a)/2; getch(); } Протокол роботи програми 
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!