Untuk menentukan bilangan sisi minimum yang diperlukan untuk membentuk segi tiga dalam rajah, kami menganalisis rangkaian antara pusat. Segitiga boleh dibentuk di mana tiga hab berkait secara eksklusif atau secara bulatan mengikut tepi. Bilangan minimum tepi yang diperlukan adalah sama dengan bilangan tepi yang hilang dalam sambungan sedia ada antara tiga hab. Dengan melihat graf dan membezakan pusat yang tidak berkaitan, kita boleh mengira bilangan sisi tambahan yang diperlukan untuk membentuk segi tiga. Kaedah ini berbeza kerana ia memerlukan pelarasan minimum untuk mewujudkan hubungan segi tiga antara pusat dalam carta.
Kaedah lintasan graf
Kaedah lintasan graf untuk mencari bilangan sisi minimum yang diperlukan untuk mencipta segitiga melibatkan kajian graf menggunakan pengiraan lintasan seperti carian mendalam-dahulu (DFS) atau carian pertama-luas (BFS). Bermula dari setiap pusat dalam graf, kami menavigasi pusat bersebelahan dan menyemak sama ada terdapat laluan panjang 2 antara mana-mana padanan pusat bersebelahan. Jika kaedah sedemikian ditemui, kami telah menemui segitiga. Dengan melakukan semula penyediaan ini untuk semua pusat, kami akan menentukan bilangan minimum sisi tambahan yang diperlukan untuk membentuk sekurang-kurangnya satu segi tiga dalam rajah. Pendekatan ini secara berkesan mengkaji struktur graf untuk membezakan segi tiga dan meminimumkan bilangan sisi yang disertakan.
Buat senarai tular atau perwakilan grid rajah anda.
Mulakan pembolehubah minMissing untuk menyimpan bilangan minimum tepi yang hilang.
Lelaran pada setiap pusat dalam carta:
Gunakan carian depth-first (DFS) atau breadth-first search (BFS) untuk memulakan traversal graf dari pusat semasa.
Untuk setiap hab jiran j hab semasa, navigasi jirannya k dan semak sama ada terdapat tepi antara j dan k.
Jika tiada tepi antara j dan k, kira bilangan sisi yang hilang semasa mencipta segi tiga dengan menolak bilangan sisi sedia ada daripada 3.
Gunakan minMissing semasa dengan paling sedikit tepi yang hilang dan minMissing untuk menaik taraf minMissing.
Selepas mengulangi operasi untuk semua pusat, nilai minMissing akan mewakili bilangan minimum sisi yang diperlukan untuk mencipta segi tiga.
Balas minHilang hormat.
#include <iostream> #include <vector> #include <queue> int minimumMissingEdges(std::vector<std::vector<int>>& graph) { int minMissing = 3; // Variable to store the least number of lost edges // Iterate over each hub in the graph for (int hub = 0; hub < graph.size(); ++hub) { std::vector<bool> visited(graph.size(), false); // Mark nodes as unvisited int lostEdges = 0; // Number of lost edges to form a triangle // Begin chart traversal from the current hub utilizing Breadth-First Search (BFS) std::queue<int> q; q.push(hub); visited[hub] = true; while (!q.empty()) { int currentHub = q.front(); q.pop(); // Check neighbors of the current hub for (int neighbor : graph[currentHub]) { // Check if there's an edge between the current hub and its neighbor if (!visited[neighbor]) { visited[neighbor] = true; q.push(neighbor); // If there's no edge between the current hub and its neighbor, increment lostEdges if (!graph[currentHub][neighbor]) { lostEdges++; } } } } // Update minMissing with the least of the current lost edges and minMissing minMissing = std::min(minMissing, lostEdges); } return minMissing; } int main() { // Example usage std::vector<std::vector<int>> graph = { {0, 1, 1, 0}, {1, 0, 0, 1}, {1, 0, 0, 1}, {0, 1, 1, 0} }; int minMissingEdges = minimumMissingEdges(graph); std::cout << "Minimum number of edges to form a triangle: " << minMissingEdges << std::endl; return 0; }
Minimum number of edges to form a triangle: 0
Tumpuan artikel ini adalah untuk mencari bilangan sisi minimum yang diperlukan untuk mencipta segitiga dalam rajah yang diberikan. Ia menggunakan kaedah traversal graf sebagai strategi untuk menentukan bilangan minimum tepi tambahan yang diperlukan untuk membentuk segi tiga terpendek dalam graf. Pendekatan ini melibatkan penggunaan algoritma traversal seperti carian depth-first (DFS) atau breadth-first search (BFS) untuk menavigasi graf.
Mulakan dari setiap hab dalam graf, siasat hab bersebelahan dan semak sama ada terdapat laluan panjang 2 antara mana-mana padanan hab bersebelahan. Jika laluan sedemikian ditemui, segitiga akan terbentuk. Dengan mencampur semula pemegang ini untuk semua pusat, pengiraan menentukan bilangan minimum sisi tambahan yang diperlukan untuk membentuk segi tiga. Artikel ini memberikan pengiraan terperinci dan contoh kod C untuk melaksanakan kaedah traversal graf. Memahami dan menggunakan kaedah ini dengan mahir dapat memastikan tepi yang diperlukan untuk membentuk segi tiga dalam struktur carta yang berbeza.
Atas ialah kandungan terperinci Bilangan sisi minimum yang diperlukan untuk membentuk segi tiga. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!