gpt4 book ai didi

c# - 分布式深度优先搜索

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:28 27 4
gpt4 key购买 nike

我曾尝试在 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;
}

最佳答案

您应该阅读计算机象棋(现已发展为世界冠军计算机游戏玩家)世界的文献。他们从事分布式深度优先搜索已有大约 30 年,并且有很多想法。要做到正确很棘手,因为您必须在不知道特定分支可能包含多少工作的情况下平均分配工作。

查看 Monty Newborn或麦吉尔大学,大约 10 年前它似乎是这方面的温床。

当然,GIYF:“分布式深度优先搜索”产生了对这篇论文的引用:Distributed Algorithms for Depth-First Search .我猜它包含了很多来自计算机国际象棋世界的想法。

*shared memory"DFS 的问题稍微简单一些;你不必向你的分布式助手发送消息,你可以简单地传递一个指针 :-} 拥有一种为你提供并行性和管理如果您的程序在每个分支上 fork 时可能发生的爆炸式并行性增长。我提供了一个 example 4x4 N-puzzle solver,它是用我设计的并行编程语言构建的。(这个例子是我最早的 SO 帖子之一!)。

关于c# - 分布式深度优先搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10852317/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com