Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menulis algoritma carian luas pertama menggunakan C#

Bagaimana untuk menulis algoritma carian luas pertama menggunakan C#

王林
王林asal
2023-09-19 11:45:361263semak imbas

Bagaimana untuk menulis algoritma carian luas pertama menggunakan C#

Cara menulis algoritma carian luas-pertama menggunakan C#

Breadth-First Search (BFS) ialah algoritma carian graf yang biasa digunakan yang digunakan untuk melintasi graf atau pokok mengikut keluasan. Dalam artikel ini, kami akan meneroka cara menulis algoritma carian luas pertama menggunakan C# dan memberikan contoh kod konkrit.

  1. Prinsip algoritma
    Prinsip asas algoritma carian keluasan pertama ialah bermula dari titik permulaan algoritma dan mengembangkan julat carian lapisan demi lapisan sehingga sasaran ditemui atau keseluruhan graf dilalui. Ia biasanya dilaksanakan melalui baris gilir.
  2. Pelaksanaan kod
    Berikut ialah contoh kod untuk menulis algoritma carian luas pertama menggunakan C#:
using System;
using System.Collections.Generic;

public class BFS
{
    public class Node
    {
        public int value;
        public List<Node> neighbors;

        public Node(int v)
        {
            value = v;
            neighbors = new List<Node>();
        }
    }

    public static void BFSAlgorithm(Node start)
    {
        Queue<Node> queue = new Queue<Node>();
        HashSet<Node> visited = new HashSet<Node>();

        queue.Enqueue(start);
        visited.Add(start);

        while (queue.Count > 0)
        {
            Node node = queue.Dequeue();
            Console.Write(node.value + " ");

            foreach (Node neighbor in node.neighbors)
            {
                if (!visited.Contains(neighbor))
                {
                    queue.Enqueue(neighbor);
                    visited.Add(neighbor);
                }
            }
        }
    }

    public static void Main(string[] args)
    {
        Node node1 = new Node(1);

        Node node2 = new Node(2);
        Node node3 = new Node(3);
        node1.neighbors.Add(node2);
        node1.neighbors.Add(node3);

        Node node4 = new Node(4);
        Node node5 = new Node(5);
        Node node6 = new Node(6);
        node2.neighbors.Add(node4);
        node2.neighbors.Add(node5);
        node3.neighbors.Add(node6);

        BFSAlgorithm(node1);
    }
}

Dalam kod di atas, kami mula-mula mentakrifkan fungsi Node类,用于表示图中的节点。节点包含一个值和一个邻居列表。BFSAlgorithm函数实现了广度优先搜索算法,其中使用一个队列来存储待处理的节点,并使用一个集合来记录已访问过的节点。算法从起点开始,将其加入队列和已访问集合,然后迭代处理队列中的节点,并将其邻居节点加入队列和已访问集合。最后,我们在程序的Main函数中创建了一个简单的图,并调用BFSAlgorithm untuk mencari.

  1. Contoh output
    Keluaran kod di atas ialah: 1 2 3 4 5 6. Menunjukkan bahawa algoritma carian pertama keluasan merentasi nod dalam graf mengikut tertib bermula dari 1.

Ringkasan:
Artikel ini memperkenalkan cara menggunakan C# untuk menulis algoritma carian luas pertama dan memberikan contoh kod terperinci. Dengan menggunakan baris gilir dan koleksi untuk melaksanakan algoritma carian pertama keluasan, kita boleh merentasi keluasan mengikut graf atau pokok untuk mencari nod sasaran atau merentasi keseluruhan struktur. Saya berharap agar pembaca dapat menguasai kemahiran asas menulis algoritma carian luas pertama dalam C# melalui artikel ini.

Atas ialah kandungan terperinci Bagaimana untuk menulis algoritma carian luas pertama menggunakan C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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