|
Axborotlar oqimini segmentlarga ajratish. Dinamik dasturlash
|
bet | 2/2 | Sana | 24.11.2023 | Hajmi | 23,86 Kb. | | #104444 |
Bog'liq Amaliy mashg’ulot №4-fayllar.orgAxborotlar oqimini segmentlarga ajratish. Dinamik dasturlash.
Chiziqli model.
Nazariy qism
Moddiy oqimlarni boshqarish jarayoni asosida, logistik tizimlardagi axbo-rotni qayta ishlash yotadi. Shunday ekan, logistikaning asosiy tushunchalaridan biri bu axborot oqimidir.
Axborot oqimi lgan xabarlar va maindisidir. Axborot oqimi qogrinishida bolanuvchi tizimlar turiga kotish joyiga konalishiga koli, moddiy oqim xarakati yolmasligi mumkin.
Axborot oqimi quyidagi konalishi;
jorsatkichlari kesi-midagi tekshirishlarsiz amalga oshmaydi. Misol uchun, biror korxonani hisoblash texnikasi bilan tatadigan axborot hajmi va qayta ishlashining zaruriy tezligini bilmasdan hal qilib borsating
#include
#include
#include
using namespace std;
struct Node {
string value, code;
unsigned amount;
Node * left;
Node * right;
// taqqoslash vositasi
bool operator() (const Node& x, const Node& y) const {
return x.amount > y.amount;
}
// taqqoslovchi ob'ektni yaratish uchun standart konstruktor kerak
Node (const string& value = "", unsigned amount = 0, Node * left = 0, Node * right = 0) {
bu- > qiymat= qiymat; / / tugun belgisi ko'p
bu - >code=""; / / tugun bit kodi string vakillik
bu- > miqdori= miqdori; / / necha marta sarflandi
bu- > chap = chap; / / chap bola
bu - >o'ng = o'ng; / / o'ng bola
}
// olingan daraxtning DOT tavsifini yaratish
string to_str() {
ostringstream x;
if (left != 0 || right != 0) {//daraxt har ikkala bola ham bor yoki yo'q
x << "\t\"" << code << ": " << value << "[" << amount << "]\" -> \"" << left->code << ": " << left->value << "[" << left->amount << "]\";\n";
x << left->to_str();
x << "\t\"" << code << ": " << value << "[" << amount << "]\" -> \"" << right->code << ": " << right->value << "[" << right->amount << "]\";\n";
x << right->to_str();
} else {
x << "\t\"" << code << ": " << value << "[" << amount << "]\" [shape=box, style=filled, fillcolor=green];\n";
}
return x.str();
}
// daraxtlarni birlashtirish
Node * join (Node x) {
return new Node(x.value + value, x.amount + amount, new Node(x), this);
}
// kodni ishlab chiqarish bilan daraxt o'tish
void traversal_code(string code) {
this->code = code;
if (left != 0 || right != 0) {
left->traversal_code(code + "1");
right->traversal_code(code + "0");
}
}
// Huffman algoritmiga ko'ra daraxt quramiz
static Node * builder(priority_queue, Node> graph) {
while (graph.size() > 1) {
Node *n = new Node(graph.top());
graph.pop();
graph.push(*n->join(*new Node(graph.top())));
graph.pop();
}
return new Node(graph.top());
}
};
unsigned amounts[256]; / / belgilar bilan duch hisoblagich bir qator
int main() {
string s;
getline (std:: cin, s); / / bo'sh joylar bilan birga qatorni o'qing
for(auto i: s) amounts[i]++;
priority_queue, Node> graph;
for (int i = 'a'; i < = 'z'; i++) / / ustuvor bilan navbat yozish
if (amounts[i] > 0) graph.emplace(s=(char)i, amounts[i]);
Node *n = Node::builder(graph);
n->traversal_code("");
// grafning tavsifiga ko'ra tasvirlarni yaratish uchun Google xizmatiga havola yaratish
cout << "http://chart.apis.google.com/chart?cht=gv&chl=" << endl;
// olingan daraxtning DOT tavsifini chizish uchun yarating
cout << "Digraph G {\n" << n->to_str() << "}";
// Agar dasturning chiqishi brauzerning manzil satriga nusxa ko'chirilsa va joylashtirilsa, rasmni ko'rasiz.
}
Topshiriqlar.
Hoffman algoritmidan foydalanib, optimal kodni yarating, kodning natijasini toping.
https://www.matburo.ru/Examples/Files/Haf1.pdf
6 ta kod belgisi mavjud. Huffman algoritm bilan STUDENT matn xabari uchun kodni qurish
https://www.matburo.ru/Examples/Files/Cod1.pdf
7-bit kodi bilan qancha ikkilik raqamni ko'rsatish mumkin. Misol sifatida kolumot (misollar bilan)
Hoffman kodi algoritmi asosida tasvirlarni siqish
Hoffman kodi algoritmi asosida maz birikmalrini siqish
Hoffman kodi algoritmi orqali Ozini siqish
Hoffman kodi algoritmi orqali HOFFMAN sozini siqish
Jarayon matematik modelini tuzishda eng kichik kvadratlar usulidan foydalanish. Kvadratik, teskari proporsional boglumotlar berilgan: familiya, ism, tugyicha bahosi: MTvaA, oliy matematika, fizika, dasturlash, topshirgan sessiya umumiy bali.
Tori tanlov usulidan foydalanib, saralashni amalga oshirish dasturini ishlab chiqing (variantga mos ravishda):
1. Talabalar familiyalarini alifbo tartibida.
2. Talabalarni yoshi bosish tartibida.
3. Talabalarni umumiy bali bosish tartibida.
4. Talabalarni birinchi imtihoni natijasi bosish tartibida.
5. Talabalarni ikkinchi imtihoni natijasi boyicha ortinchi imtihoni natijasi boyicha oyicha kamayish tartibida.
Nazorat savollari
Jarayon matematik modelini tuzishda eng kichik kvadratlar usulidan foydalanish algoritmini tahlil qiling.
Jarayon matematik modelini tuzishda eng kichik kvadratlar usulidan foydalanish qanday amalga oshirilishini tahlil qiling.
http://fayllar.org
|
| |