Jadval funksiyani Fure qatoriga yoyish. Fure koeffitsientlarini hisoblash. Qator hadlari sonini tanlash Ishdan maqsad



Download 0,61 Mb.
bet9/13
Sana26.06.2022
Hajmi0,61 Mb.
#706999
1   ...   5   6   7   8   9   10   11   12   13
Bog'liq
XAKIMJON YOQUBJONOV 13-18.

Topshiriqlar.

  1. Hoffman algoritmidan foydalanib, optimal kodni yarating, kodning natijasini toping.

https://www.matburo.ru/Examples/Files/Haf1.pdf

  1. 6 ta kod belgisi mavjud. Huffman algoritm bilan STUDENT matn xabari uchun kodni qurish

https://www.matburo.ru/Examples/Files/Cod1.pdf

  1. 7-bit kodi bilan qancha ikkilik raqamni ko'rsatish mumkin. Misol sifatida ko’rsating.

  2. Hoffman algoritmi haqida ma’lumot (misollar bilan)

  3. Hoffman kodi algoritmi asosida tasvirlarni siqish

  4. Hoffman kodi algoritmi asosida ma’lumotlarni siqish

  5. Hoffman kodi algoritmi orqali TATUFF so’z birikmalrini siqish

  6. Hoffman kodi algoritmi orqali O’ZBEKISTON so’zini siqish

  7. Hoffman kodi algoritmi orqali HOFFMAN so’zini siqish

  8. Hoffman kodi algoritmi orqali ALGORITM so’zini siqish

  9. // Huffman Coding in C++


  10. #include

  11. using namespace std;


  12. #define MAX_TREE_HT 50


  13. struct MinHNode {

  14. unsigned freq;

  15. char item;

  16. struct MinHNode *left, *right;

  17. };


  18. struct MinH {

  19. unsigned size;

  20. unsigned capacity;

  21. struct MinHNode **array;

  22. };


  23. // Creating Huffman tree node

  24. struct MinHNode *newNode(char item, unsigned freq) {

  25. struct MinHNode *temp = (struct MinHNode *)malloc(sizeof(struct MinHNode));


  26. temp->left = temp->right = NULL;

  27. temp->item = item;

  28. temp->freq = freq;


  29. return temp;

  30. }


  31. // Create min heap using given capacity

  32. struct MinH *createMinH(unsigned capacity) {

  33. struct MinH *minHeap = (struct MinH *)malloc(sizeof(struct MinH));

  34. minHeap->size = 0;

  35. minHeap->capacity = capacity;

  36. minHeap->array = (struct MinHNode **)malloc(minHeap->capacity * sizeof(struct MinHNode *));

  37. return minHeap;

  38. }


  39. // Print the array

  40. void printArray(int arr[], int n) {

  41. int i;

  42. for (i = 0; i < n; ++i)

  43. cout << arr[i];


  44. cout << "\n";

  45. }


  46. // Swap function

  47. void swapMinHNode(struct MinHNode **a, struct MinHNode **b) {

  48. struct MinHNode *t = *a;

  49. *a = *b;

  50. *b = t;

  51. }


  52. // Heapify

  53. void minHeapify(struct MinH *minHeap, int idx) {

  54. int smallest = idx;

  55. int left = 2 * idx + 1;

  56. int right = 2 * idx + 2;


  57. if (left < minHeap->size && minHeap->array[left]->freq < minHeap->array[smallest]->freq)

  58. smallest = left;


  59. if (right < minHeap->size && minHeap->array[right]->freq < minHeap->array[smallest]->freq)

  60. smallest = right;


  61. if (smallest != idx) {

  62. swapMinHNode(&minHeap->array[smallest],

  63. &minHeap->array[idx]);

  64. minHeapify(minHeap, smallest);

  65. }

  66. }


  67. // Check if size if 1

  68. int checkSizeOne(struct MinH *minHeap) {

  69. return (minHeap->size == 1);

  70. }


  71. // Extract the min

  72. struct MinHNode *extractMin(struct MinH *minHeap) {

  73. struct MinHNode *temp = minHeap->array[0];

  74. minHeap->array[0] = minHeap->array[minHeap->size - 1];


  75. --minHeap->size;

  76. minHeapify(minHeap, 0);


  77. return temp;

  78. }


  79. // Insertion

  80. void insertMinHeap(struct MinH *minHeap, struct MinHNode *minHeapNode) {

  81. ++minHeap->size;

  82. int i = minHeap->size - 1;


  83. while (i && minHeapNode->freq < minHeap->array[(i - 1) / 2]->freq) {

  84. minHeap->array[i] = minHeap->array[(i - 1) / 2];

  85. i = (i - 1) / 2;

  86. }


  87. minHeap->array[i] = minHeapNode;

  88. }


  89. // BUild min heap

  90. void buildMinHeap(struct MinH *minHeap) {

  91. int n = minHeap->size - 1;

  92. int i;


  93. for (i = (n - 1) / 2; i >= 0; --i)

  94. minHeapify(minHeap, i);

  95. }


  96. int isLeaf(struct MinHNode *root) {

  97. return !(root->left) && !(root->right);

  98. }


  99. struct MinH *createAndBuildMinHeap(char item[], int freq[], int size) {

  100. struct MinH *minHeap = createMinH(size);


  101. for (int i = 0; i < size; ++i)

  102. minHeap->array[i] = newNode(item[i], freq[i]);


  103. minHeap->size = size;

  104. buildMinHeap(minHeap);


  105. return minHeap;

  106. }


  107. struct MinHNode *buildHfTree(char item[], int freq[], int size) {

  108. struct MinHNode *left, *right, *top;

  109. struct MinH *minHeap = createAndBuildMinHeap(item, freq, size);


  110. while (!checkSizeOne(minHeap)) {

  111. left = extractMin(minHeap);

  112. right = extractMin(minHeap);


  113. top = newNode('$', left->freq + right->freq);


  114. top->left = left;

  115. top->right = right;


  116. insertMinHeap(minHeap, top);

  117. }

  118. return extractMin(minHeap);

  119. }

  120. void printHCodes(struct MinHNode *root, int arr[], int top) {

  121. if (root->left) {

  122. arr[top] = 0;

  123. printHCodes(root->left, arr, top + 1);

  124. }


  125. if (root->right) {

  126. arr[top] = 1;

  127. printHCodes(root->right, arr, top + 1);

  128. }

  129. if (isLeaf(root)) {

  130. cout << root->item << " | ";

  131. printArray(arr, top);

  132. }

  133. }


  134. // Wrapper function

  135. void HuffmanCodes(char item[], int freq[], int size) {

  136. struct MinHNode *root = buildHfTree(item, freq, size);


  137. int arr[MAX_TREE_HT], top = 0;


  138. printHCodes(root, arr, top);

  139. }


  140. int main() {

  141. char arr[] = {'A', 'B', 'C', 'D'};

  142. int freq[] = {5, 1, 6, 3};


  143. int size = sizeof(arr) / sizeof(arr[0]);


  144. cout << "Char | Huffman code ";

  145. cout << "\n----------------------\n";

  146. HuffmanCodes(arr, freq, size);

  147. }



Nazorat savollari

  1. Axborotlar oqimini segmentlarga ajratish qanday amalga oshiriladi.

  2. Chiziqli modelni tushuntirib bering.


LABORATORIYA ISHI - 17
Mavzu: Jarayon matematik modelini tuzishda eng kichik kvadratlar usulidan foydalanish.
Ishdan maqsad. Jarayon matematik modelini tuzishda eng kichik kvadratlar usulidan foydalanishni o’rganish.
Qo’yilgan masala. Jarayon matematik modelini tuzishda eng kichik kvadratlar usulidan foydalanish.
Ish tartibi:

  • Tajriba ishi nazariy ma’lumotlarini o‘rganish;

  • Berilgan topshiriqning algoritmini ishlab chiqish;

  • Natijalarni tekshirish;

  • Hisobotni tayyorlash va topshirish.



Nazariy qism
Birlashmali saralash (Merge Sort) algoritmi asosiy beshta saralash algoritmlari (pufakchali saralash, tezkor saralash va boshqalar) dan biri bo`lib, chiziqli saralash algoritmlaridan farqli ravishda "bo`lib tashla va hukmronlik qil" tipidagi algoritm hisoblanadi.
Bu tipdagi algoritmlar katta hajmdagi masalalarni nisbatan kichik bo`lgan va oson yechiladigan qismlarga ajratgan holda bajaradi. Bunday algoritmlar masalalarni hal qilishda vaqtdan katta yutuq qilish imkonini beradi.
Birlashmali saralashda biz berilgan massivni uzunligi faqat 1 elementga teng bo`lgan qismlar qolmaguncha o`rtasidan ajratamiz. Keyin bu qismlar to`g`ri tartibda birlashtiriladi.
Keling ushbu massivni qaraylik:
Uni teng ikkiga ajratamiz:
Va yana har bir qismni ikkiga ajratamiz, toki 1 elementli qismlar qolmagunicha:
Massivni maksimal qisqa qismlarga ajratgandan so`ng, ularni to`g`ri tartibda birlashtiramiz, ya'ni:
Dastlab, 2 elementli saralangan guruhlarni olamiz va ularni 4 elementli guruhlarga birlashtiramiz va yakunida hammasini birlashtirgan holda saralangan massivni hosil qilamiz.
Algoritm ishlashi uchun quyidagi amallarni amalga oshirish kerak:

  1. Massivni guruhlarga rekursiv ajratish amali ( sort).

  2. To`g`ri tartibda birlashtirish amali (merge).

Java dasturlash tilidagi algoritm kodi:
import java.util.Arrays;

Download 0,61 Mb.

Do'stlaringiz bilan baham:
1   ...   5   6   7   8   9   10   11   12   13




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish