编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:    Password: 
  登记 登记    
 模拟CCC(WCC)
指数 -> 竞赛
转到页面 以前的   1, 2, 3, 4, 5   下一个
查看上一个主题 可打印的版本下载主题订阅本主题私人信息 刷新页面 查看下一个主题
作者 信息
BBI5291




 邮政 发布: 星期四19日,2009年7:45 PM  帖子主题:Re:Mock CCC(WCC)

说有V顶点和E边缘。没有两个连接的顶点可以分开超过V-1的距离,因此我们可以初始将距离阵列的所有条目设置为V,然后运行我们的DFS。在每个点,我们的距离到当前顶点;只有当这小于当前存储的距离时,我们才继续递减。因此,每个顶点最多访问过V次,只有当它导致顶点的距离减小时,才会跨越边缘,因此不会发生不超过EV边缘遍历。因此,我声称DFS最短路径的运行时间由O(v(e + v))界定。将此与以保证O(E + V)时间运行的BF进行比较,您可以看到哪一个是显而易见的选择。但是,您可以看到运行时间仍然是强烈的多项式(而不是指数)。
赞助
赞助
 赞助
 赞助
A.J.




 邮政 发布: 星期五2019年3月20日12:13 PM  帖子主题:Re:Mock CCC(WCC)

我同意布莱恩。它不是指数,但运行时无法突出。
chili5




 邮政 发布: 2009年3月21日星期六下午5:47  帖子主题:Re:Mock CCC(WCC)

我明白DFS如何应用于图形。在检查另一条路径之前,您将完全检查一条路径。咪血是同样的概念吗?

有人可以指出我的DFS和BFS的良好资源吗?除了在这里的图灵教程,我不太了解?
A.J.




 邮政 发布: 2009年3月21日星期六下午6:01  帖子主题:Re:Mock CCC(WCC)

嗯,这里的教程实际上非常好....但是,如果你愿意,我不介意向你解释DFS / BFS
SaltPro15




 邮政 发布: 2009年3月21日星期六6:54  帖子主题:Re:Mock CCC(WCC)

嗯,你用这个迷宫/图表谈了我......
我的理解是,BFS / DFS用于这样的问题
http://dwite.org/questions/shortest_path_around_v2.html
请纠正我,我希望学习  很高兴
什么是图表问题的示例?像今年CCC的S3?
A.J.




 邮政 发布: 2009年3月21日星期六晚上7:05  帖子主题:Re:Mock CCC(WCC)

@ SaltPro15 - 您不仅应该使用DFS / BFS作为这些问题。它们具有许多应用程序。例如,使用BFS的一个示例是当您想要解决幻灯片拼图(或8个拼图,15个拼图等)时,它真的取决于电路板的大小)。您的起点是电路板的当前配置,您的目标是所需的endstate。您可以通过在电路板上执行移动(即,滑动板上的方块)来获取电路板的新配置,从而添加到您的FIFO队列(即'首先第一次出版)。

至于DFS,DFS的差异很小,称为DFSID(深度首先搜索使用迭代深化)。实质上它涵盖了BFS封面的相同路线,但它有其益处。它基本上是一个某个“深度”的DFS。在为国际象棋撰写类似的游戏时,DFSID非常有用,在那里您必须处理一堆移动。

此外,应用程序更加明显,是图形。您在链接中提供的问题SaltPro15是一个最短的路径问题;但是,如果输入输入作为网格,而且是图表(带节点,边,开始和结束点)。您必须首先意识到对于DFS / BFS为这样的图形工作,任何2个节点之间的距离必须相同(否则DFS / BFS不起作用)。如果距离不一样,那么也许弗洛伊德战争或Dijkstra等算法肯定会派上用场(取决于输入的大小)。

因此,以下是DFS / BFS,SaltPro15的其他一些应用。
SaltPro15




 邮政 发布: 2009年3月21日星期六7:11  帖子主题:Re:Mock CCC(WCC)

好的,谢谢A.J. ,你基本上是我的CS老师现在哈哈,我几乎没有从你的Dwite工作,好工作  眨眼
A.J.




 邮政 发布: 2009年3月21日星期六7:36 PM  帖子主题:Re:Mock CCC(WCC)

SaltPro15写道:

好的,谢谢A.J. ,你基本上是我的CS老师现在哈哈,我几乎没有从你的Dwite工作,好工作  眨眼

那是恭维,谢谢  很高兴
赞助
赞助
 赞助
 赞助
SaltPro15




 邮政 发布: 2009年3月21日星期六7:47  帖子主题:Re:Mock CCC(WCC)

没问题,你今年不毕业吗?我仍然需要学习dijkstra的哈哈
SaltPro15




 邮政 发布: 2009年3月21日星期六8:03  帖子主题:Re:Mock CCC(WCC)

Woo 500位!

好的,这是我的最后一个题目,有没有人得到J4?我以为我差点已经有了,直到我意识到我做错了,然后放弃了
分析模式




 邮政 发布: 2009年3月21日星期六晚上10:07  帖子主题:Re:Mock CCC(WCC)

我使用了四个最短的路径算法:

1)BFS(仅在未加权的图表中)O(v + e)
2)Dijkstra(在任何没有负面边缘权重的图表中)O((e + v)log v)使用堆
3)Floyd-Warshall's(在任何图表中少于100个顶点(因为它的时间复杂度O(v ^ 3))
4)Bellman-Ford(在任何带有负边缘权重的图表中,但没有负周期)O(VE)

知道前三个是至关重要的,但对于最后一个,这并不是那么普遍。我只需要代码它,因为需要问题(并且它在我的CS类中值得积分)。

是的,这个年度的问题J5 / S3确实是一个图论问题。 Floyd-Warshall在它的最短路径中派上友好,因为:

1)它比BFS更快更容易。
2)有少于100人,所以时间不是问题。

另一个部分是图表上的基本操作(由于小尺寸而存储在邻接矩阵中)。如果图表更大,我会使用邻接列表,在这种情况下,我不会使用Floyd;最有可能,我的下一个选择将是bfs。

鉴于此图:

1
/ \
2 3
/ \ / \
4 5 6 7

DFS将按此顺序访问节点:

1,2,4,2,5,2,1,3,6,3,7,3,1,1(注意我包括所有回溯)

BFS:

1,2,3,4,5,6,7
A.J.




 邮政 发布: 2009年3月21日星期六晚上10:27  帖子主题:Re:Mock CCC(WCC)

是的,这是真的

Floyd Warshall这几年是一个很好的方法S3 / J5
chili5




 邮政 发布: 孙3月22日,2009年5:18 AM  帖子主题:Re:Re:Mock CCC(WCC)

A.J. @ 2009年3月21日星期六下午6:01写道:
嗯,这里的教程实际上非常好....但是,如果你愿意,我不介意向你解释DFS / BFS


那很好啊!也许教程很好,只是我似乎没有理解。  伤心
BBI5291




 邮政 发布: 2009年3月22日星期日11:17 AM  帖子主题:Re:Re:Mock CCC(WCC)

A.J. @ 3月21日,2009年3月7:05 PM写道:
您不仅应该使用DFS / BFS就像这些问题一样。它们具有许多应用程序。例如,使用BFS的一个示例是当您想解决幻灯片拼图(或8个拼图,15个拼图等...实质取决于电路板的大小)


是的,对于8个拼图这很好,因为只有(我认为)9!/ 2 = 181440个顶点,大约四倍的边缘。但对于15个拼图,状态空间太大,你最好使用一个*,这就像Dijkstra一样,但是使用启发式来猜测接下来的方式,以便加快搜索。考虑到16!/ 2 = 10461394944000配置,您将看到我的意思。
A.J.




 邮政 发布: 孙3月22日,2009年1:23 PM  帖子主题:Re:Mock CCC(WCC)

BBI5291 写道:

A.J. @ 3月21日,2009年3月7:05 PM写道:
您不仅应该使用DFS / BFS就像这些问题一样。它们具有许多应用程序。例如,使用BFS的一个示例是当您想解决幻灯片拼图(或8个拼图,15个拼图等...实质取决于电路板的大小)


是的,对于8个拼图这很好,因为只有(我认为)9!/ 2 = 181440个顶点,大约四倍的边缘。但对于15个拼图,状态空间太大,你最好使用一个*,这就像Dijkstra一样,但是使用启发式来猜测接下来的方式,以便加快搜索。考虑到16!/ 2 = 10461394944000配置,您将看到我的意思。


你是对的,*是最佳的。但是,BFS也会有效,它太慢了。我只是打算给一些BFS的应用。
从上一个显示帖子:   
    指数 -> 竞赛
查看上一个主题  告诉一个朋友 可打印的版本下载主题订阅本主题私人信息 刷新页面 查看下一个主题

45  [ 64 Posts ]
转到页面 以前的   1, 2, 3, 4, 5   下一个
跳到:    


Style:  
搜索: