在分布式的方式深度优先搜索(Depth first search in a distributed

2019-09-17 16:49发布

我试图实现在C#中深度优先搜索,但我不完全知道如何做到这一点的分布式计算方式。 如果你们能帮助我在这,我将非常感激:)你可以在下面找到我的代码DFS

public class DFS
{ 
static List<string> traversedList = new List<string>();
static List<string> parentList = new List<string>();

public static void Main(string[] args)
{

    int N = 100;
    int M = N * 4;
    int P = N * 16;

    Stack newstack = new Stack();

    List<string> global_list=new List<string>();

    StreamReader file = new StreamReader("my input file");

    string text = file.ReadToEnd();

    string[] lines = text.Split('\n');

    string[][] array1 = new string[lines.Length][];

    for (int i = 0; i < lines.Length; i++)
    {
        lines[i] = lines[i].Trim();
        string[] words = lines[i].Split(' ');

        array1[i] = new string[words.Length];

        for (int j = 0; j < words.Length; j++)
        {
            array1[i][j] = words[j];
        }
    }

    StreamWriter sr = new StreamWriter(args[0]);

    for (int i = 0; i < array1.Length; i++)
    {
        for (int j = 0; j < array1[i].Length; j++)
        {
            if (j != 0 )
            {
                sr.Write(array1[i][0] + ":" + array1[i][j]);
                Console.WriteLine(array1[i][0] + ":" + array1[i][j]);
                sr.Write(sr.NewLine);
            }
        }

    }

    int start_no = Convert.ToInt32(args[args.Length-1]);

    traversedList.Add(start_no.ToString());
    parentList.Add("root");
    dfs(array1, start_no);

    for (int z = 0; z < traversedList.Count; z++)
    {
            Console.WriteLine(traversedList.ElementAt(z) + " "+parentList.ElementAt(z)+" "+(z+1));
     }
    Console.ReadLine();
}

private static void dfs(string[][] array, int point)
{
    for (int z = 1; z < array[point].Length; z++)
        {
            if ((!traversedList.Contains(array[point][z])))
            {
                traversedList.Add(array[point][z]);
                parentList.Add(point.ToString());
                dfs(array, int.Parse(array[point][z]));
            }
        }
        return;
}   

}

Answer 1:

你应该阅读从计算机国际象棋(现在演变成世界冠军的电脑游戏玩家)世界文学。 他们一直在做分布式深度优先搜索约30年,并有很多想法。 这是棘手得到正确的,因为你必须在不知道特定分支可能多少工作包含均匀分布的工作。

退房蒙蒂新生儿或麦吉尔大学,这似乎是这方面的一些10年前相当的温床。

当然,GIYF:“分布式深度优先搜索”产生于本文的引用: 深度优先搜索:分布式算法 。 我猜它含有大量的从计算机象棋界的想法。

对于*共享内存”的问题DFS少了几分困难,你不必将消息发送到分布式助手,你可以简单地传递一个指针: - }它有助于有它为您提供了并行和管理爆炸性并行语言如果生长在每个分支程序叉子。我提供了一个可能发生的例如4×4的N-谜题解决建立在一个并行编程语言,我设计的。(这个例子是我最早的SO职位之一!)。



文章来源: Depth first search in a distributed way