Rumah pembangunan bahagian belakang C++ Cara menggunakan algoritma Prim dalam C++

Cara menggunakan algoritma Prim dalam C++

Sep 20, 2023 pm 12:31 PM
pokok rentang minimum gambar algoritma prim

Cara menggunakan algoritma Prim dalam C++

Tajuk: Contoh penggunaan dan kod algoritma Prim dalam C++

Pengenalan: Algoritma Prim ialah algoritma pokok rentang minimum yang biasa digunakan, terutamanya digunakan untuk menyelesaikan masalah pokok rentang minimum dalam teori graf. Dalam C++, algoritma Prim boleh digunakan dengan berkesan melalui struktur data yang munasabah dan pelaksanaan algoritma. Artikel ini akan memperkenalkan cara menggunakan algoritma Prim dalam C++ dan memberikan contoh kod khusus.

1. Pengenalan kepada algoritma Prim
Algoritma prim ialah algoritma tamak yang bermula dari bucu dan secara beransur-ansur mengembangkan set bucu pokok rentang minimum sehingga semua bucu dimasukkan. Ia membina pokok rentang minimum dengan terus memilih tepi dengan berat terkecil yang disambungkan ke set semasa.

2. Langkah pelaksanaan algoritma Prim

  1. Buat set pokok rentang minimum kosong dan baris gilir keutamaan untuk menyimpan pemberat tepi dan bucu bersambung.
  2. Pilih bucu secara rawak sebagai bucu permulaan dan tambahkannya pada set pokok rentang minimum.
  3. Tambahkan tepi yang disambungkan ke bucu permulaan pada barisan keutamaan.
  4. Ulang langkah berikut sehingga pokok rentang minimum mengandungi semua bucu:
    a.
    b. Jika bucu sudah berada dalam set pokok rentang minimum, abaikan bahagian tepi.
    c. Jika tidak, tambahkan bucu pada set pokok rentang minimum dan tambahkan tepi yang disambungkan ke bucu pada barisan keutamaan.
  5. Keluarkan set pokok rentang minimum.

3. Contoh kod C++
Berikut ialah contoh kod menggunakan C++ untuk melaksanakan algoritma Prim, yang menggunakan matriks bersebelahan untuk mewakili graf:

#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;

const int MAX = 100;
const int INF = 9999;

vector<vector<int>> graph(MAX, vector<int>(MAX, INF));

void prim(int start, int n)
{
    vector<int> key(n, INF);  // 存储每个顶点到最小生成树的最小权重
    vector<bool> visited(n, false);  // 标记顶点是否已经加入最小生成树
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;  // 优先队列,按权重升序排列

    key[start] = 0;  // 起始顶点到自身的权重置为0
    pq.push(make_pair(0, start));

    while (!pq.empty())
    {
        int u = pq.top().second;
        pq.pop();

        visited[u] = true;

        for (int v = 0; v < n; v++)
        {
            if (graph[u][v] != INF && !visited[v] && graph[u][v] < key[v])
            {
                key[v] = graph[u][v];
                pq.push(make_pair(graph[u][v], v));
            }
        }
    }

    // 输出最小生成树的边
    for (int i = 1; i < n; i++)
    {
        cout << "Edge: " << i << " - " << key[i] << endl;
    }
}

int main()
{
    int n, e;
    cout << "Enter the number of vertices: ";
    cin >> n;
    cout << "Enter the number of edges: ";
    cin >> e;

    cout << "Enter the edges and weights: " << endl;
    int u, v, w;
    for (int i = 0; i < e; i++)
    {
        cin >> u >> v >> w;
        graph[u][v] = w;
        graph[v][u] = w;
    }

    int start;
    cout << "Enter the starting vertex: ";
    cin >> start;

    cout << "Minimum Spanning Tree edges: " << endl;
    prim(start, n);

    return 0;
}
Salin selepas log masuk

4. dan menyediakan contoh kod perenggan tertentu. Pepohon rentang minimum boleh dikira dengan cekap dengan menggunakan struktur data dan pelaksanaan algoritma yang sesuai. Saya harap artikel ini akan membantu anda apabila menggunakan algoritma Prim untuk menyelesaikan masalah pokok rentang minimum.

Atas ialah kandungan terperinci Cara menggunakan algoritma Prim dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan algoritma Prim dalam C++ Cara menggunakan algoritma Prim dalam C++ Sep 20, 2023 pm 12:31 PM

Tajuk: Penggunaan algoritma Prim dan contoh kod dalam C++ Pengenalan: Algoritma Prim ialah algoritma pokok rentang minimum yang biasa digunakan, terutamanya digunakan untuk menyelesaikan masalah pokok rentang minimum dalam teori graf. Dalam C++, algoritma Prim boleh digunakan dengan berkesan melalui struktur data yang munasabah dan pelaksanaan algoritma. Artikel ini akan memperkenalkan cara menggunakan algoritma Prim dalam C++ dan memberikan contoh kod khusus. 1. Pengenalan kepada algoritma Prim Algoritma prim ialah algoritma tamak Ia bermula dari bucu dan secara beransur-ansur mengembangkan set bucu pokok rentang minimum sehingga ia mengandungi

Algoritma Boruvka dalam C++ untuk pokok rentang minimum Algoritma Boruvka dalam C++ untuk pokok rentang minimum Aug 27, 2023 pm 02:53 PM

Dalam teori graf, mencari pokok rentang minimum (MST) bagi graf berwajaran bersambung adalah masalah biasa. MST ialah subset tepi graf yang menghubungkan semua bucu dan meminimumkan jumlah berat tepi. Algoritma yang cekap untuk menyelesaikan masalah ini ialah algoritma Boruvka. Syntax structEdge{intsrc,dest,weight;};//Definethestructuretorepresentasubsetforunion-findstructSubset{intparent,rank;};Algoritma Sekarang, mari kita gariskan langkah-langkah yang terlibat dalam mencari pokok rentang minimum dalam algoritma Boruvka − Mulakan MST sebagai set kosong . untuk setiap bucu

Bagaimana untuk menyediakan dua gambar untuk dianimasikan pada masa yang sama dalam PPT Bagaimana untuk menyediakan dua gambar untuk dianimasikan pada masa yang sama dalam PPT Mar 26, 2024 pm 08:40 PM

1. Klik dua kali untuk membuka dokumen ujian. 2. Selepas mengklik kerja untuk mencipta dokumen ppt pertama, klik Sisipkan--Gambar--Dari Fail dalam menu. 3. Pilih fail yang kami masukkan dan klik Sisipkan. 4. Masukkan satu lagi dengan cara yang sama, dan seret dan laraskan dua gambar ke kedudukan yang sesuai. 5. Pilih dua gambar pada masa yang sama, klik kanan - Kumpulan - Kumpulan, supaya kedua-dua gambar menjadi satu. 6. Pilih grafik yang digabungkan, klik kanan - Sesuaikan animasi. 7. Klik Tambah Kesan, pilih kesan, dan klik OK Apabila anda melihat PPT, anda akan mendapati bahawa kedua-dua gambar bergerak bersama.

Bagaimana untuk melaksanakan algoritma pengisihan topologi graf menggunakan java Bagaimana untuk melaksanakan algoritma pengisihan topologi graf menggunakan java Sep 19, 2023 pm 03:19 PM

Cara menggunakan Java untuk melaksanakan algoritma pengisihan topologi untuk graf Pengenalan: Graf ialah struktur data yang sangat biasa dan mempunyai pelbagai aplikasi dalam bidang sains komputer. Algoritma pengisihan topologi ialah algoritma klasik dalam teori graf yang boleh mengisih graf akiklik terarah (DAG) untuk menentukan kebergantungan antara nod dalam graf. Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan Java untuk melaksanakan algoritma pengisihan topologi graf, dengan contoh kod Java tertentu. 1. Tentukan struktur data graf Sebelum melaksanakan algoritma pengisihan topologi, kita perlu mentakrifkan terlebih dahulu

Cara menggunakan java untuk melaksanakan algoritma kitaran Hamiltonian graf Cara menggunakan java untuk melaksanakan algoritma kitaran Hamiltonian graf Sep 21, 2023 am 09:03 AM

Cara menggunakan Java untuk melaksanakan algoritma kitaran Hamiltonian untuk graf Kitaran Hamiltonian ialah masalah pengiraan dalam teori graf, iaitu mencari laluan tertutup yang mengandungi semua bucu dalam graf tertentu. Dalam artikel ini, kami akan memperkenalkan secara terperinci cara melaksanakan algoritma kitaran Hamiltonian menggunakan bahasa pengaturcaraan Java dan memberikan contoh kod yang sepadan. Perwakilan Graf Pertama, kita perlu mewakili graf menggunakan struktur data yang sesuai. Di Java, kita boleh mewakili graf menggunakan matriks bersebelahan atau senarai terpaut bersebelahan. Di sini kita memilih untuk menggunakan matriks bersebelahan untuk mewakili graf. Tentukan fail bernama

Bagaimana untuk menggunakan algoritma tamak untuk mencapai penyelesaian optimum masalah pokok rentang minimum dalam PHP? Bagaimana untuk menggunakan algoritma tamak untuk mencapai penyelesaian optimum masalah pokok rentang minimum dalam PHP? Sep 19, 2023 pm 06:33 PM

Bagaimana untuk menggunakan algoritma tamak untuk mencapai penyelesaian optimum masalah pokok rentang minimum dalam PHP? Masalah pokok rentang minimum (MinimumSpanningTree) adalah untuk mencari subpokok dalam graf tidak bersambung yang bersambung supaya subpokok ini mengandungi semua bucu dalam graf dan jumlah pemberat semua tepi adalah yang terkecil. Algoritma tamak adalah salah satu kaedah biasa untuk menyelesaikan masalah ini secara beransur-ansur mencari penyelesaian optimum global dengan memilih penyelesaian optimum semasa setiap kali. Pertama, kita perlu menentukan kelas graf untuk menyimpan struktur graf dan berat tepi. Berikut adalah contoh

Cara menggunakan java untuk melaksanakan algoritma komponen graf yang bersambung kuat Cara menggunakan java untuk melaksanakan algoritma komponen graf yang bersambung kuat Sep 21, 2023 am 11:09 AM

Cara menggunakan Java untuk melaksanakan algoritma komponen bersambung kuat bagi graf Pengenalan: Graf ialah struktur data yang biasa digunakan dalam sains komputer, dan ia boleh membantu kami menyelesaikan banyak masalah praktikal. Dalam graf, komponen bersambung merujuk kepada set bucu dalam graf yang mempunyai laluan yang boleh dicapai bersama. Komponen bersambung kuat bermakna terdapat laluan dua arah antara mana-mana dua bucu dalam graf terarah. Artikel ini akan memperkenalkan cara menggunakan Java untuk melaksanakan algoritma komponen graf yang bersambung kuat untuk membantu pembaca memahami keterkaitan graf dengan lebih baik. 1. Perwakilan graf Dalam Java, kita boleh menggunakan matriks bersebelahan atau bersebelahan

Penerokaan mendalam tentang kaedah aplikasi dan pelaksanaan struktur data bukan linear pepohon dan graf dalam Java Penerokaan mendalam tentang kaedah aplikasi dan pelaksanaan struktur data bukan linear pepohon dan graf dalam Java Dec 26, 2023 am 10:22 AM

Memahami Pokok dan Graf dalam Java: Meneroka Aplikasi dan Pelaksanaan Struktur Data Tak Linear Pengenalan Dalam sains komputer, struktur data ialah cara data disimpan, disusun dan diuruskan dalam komputer. Struktur data boleh dibahagikan kepada struktur data linear dan struktur data bukan linear. Pokok dan graf ialah dua jenis struktur data tak linear yang paling biasa digunakan. Artikel ini akan menumpukan pada konsep, aplikasi dan pelaksanaan pepohon dan graf dalam Java, dan memberikan contoh kod khusus. Konsep dan Aplikasi Pokok Pokok ialah jenis data abstrak, koleksi nod dan tepi. Setiap nod pokok mengandungi nombor

See all articles