• Topshiriqlar.
  • Nazorat savollari
  • Axborotlar oqimini segmentlarga ajratish. Dinamik dasturlash




    Download 23,86 Kb.
    bet2/2
    Sana24.11.2023
    Hajmi23,86 Kb.
    #104444
    1   2
    Bog'liq
    Amaliy mashg’ulot №4-fayllar.org

    Axborotlar 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.

    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 kolumot (misollar bilan)

    2. Hoffman kodi algoritmi asosida tasvirlarni siqish

    3. Hoffman kodi algoritmi asosida maz birikmalrini siqish

    4. Hoffman kodi algoritmi orqali Ozini siqish

    5. 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

    1. Jarayon matematik modelini tuzishda eng kichik kvadratlar usulidan foydalanish algoritmini tahlil qiling.

    2. Jarayon matematik modelini tuzishda eng kichik kvadratlar usulidan foydalanish qanday amalga oshirilishini tahlil qiling.

    http://fayllar.org

    Download 23,86 Kb.
  • 1   2




    Download 23,86 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Axborotlar oqimini segmentlarga ajratish. Dinamik dasturlash

    Download 23,86 Kb.