标题:[公告][讨论]算法问题讨论交流帖
只看楼主
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
结帖率:100%
 问题点数:0 回复次数:18 
[公告][讨论]算法问题讨论交流帖
本帖在大年三十前有效(时间可能会向后延迟,试情况定)
为了增加大家的学习讨论氛围,同时使大家在新春佳节时能有更多收获特开此帖

大家可以在本帖中提出算法问题(其它问题恕不讨论回答),我将尽我所能,与
大家讨论,帮助解决。既是对我算法学习的巩固与检验,又是对大家的帮助提高

提出的算法可以包括但不局限于以下范围(范围尽量在NOI范围内):
枚举
贪心
递归
递推
高精度计算
动态规划(不包括状态压缩DP):
  较底难度递推
  较低难度记忆化搜索
搜索:
  广度优先搜索:
    普通广度优先搜索
    双向广度优先搜索
  深度优先搜索
  迭代加深搜索
程序优化相关:
  优化时间效率:
    减枝等
  优化空间效率
数据结构相关(不包括图,数据结构尽量不用链表方式):
  排序
提出的算法中请不要涉及过深,过高难度的,最好包括在以上方面.
请不要提供您的程序让我们改错,如果您思考过这道题,请您提供您的思考过程和
思路
我不是高手,技术并不高超,因此请不要故意刁难我,也不要提出无意义的问题(例
如计算10000000!的精确数值)
提出的算法中请不要包括特别基础的算法,因为那样的算法几乎包括在所有的语
言书籍和算法书籍中:
如:
  三塔问题
  约瑟环问题
  冒泡排序
  选择排序
等,但大数据等除外(例如数据规模为1000000的三塔问题)
请不要直接将作业提出,否则将直接删帖
请不要直接将ACM英文题拿出,最好提供中文翻译
提出的问题我们会提供算法描述,但是不保证提供代码(尤其是对于类似 拱猪分
值计算 等算法性较低只是实现较烦琐的题).因为算法是灵魂,给出了算法,程序
很容易实现
  
本帖不保证您的问题一定被解决,但我们会尽力,难题将会与大家一同讨论。欢
迎大家积极讨论。

[[it] 本帖最后由 卧龙孔明 于 2008-2-3 08:55 编辑 [/it]]
搜索更多相关主题的帖子: 算法问题 讨论 动态规划 优先搜索 范围 
2008-02-01 17:46
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
得分:0 
顶一下,想问一下最大流的最短增广路算法,那个很难懂的东西。。。
你怎么理解它的?
2008-02-01 18:17
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
得分:0 
ls来拆台了
您说的那些算法我不了解,我会放在帖顶,请其他了解那个算法的人来解答,同时我会在今晚或明晚错算法书籍中查阅此算法的资料,尽力解答

提问的算法请尽量包含在以上列出的表中

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-02-01 18:22
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
得分:0 
你所面向的对象比较正常,而偶就故意弄了一个专帮习题作业那些超简单题目的
2008-02-01 20:45
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:0 
网络最大流问题是我队友研究的比较多,我只少许看了一下,增广路径定理和最大流最小割定理。根据增广路径定理其实很容易就能用dfs或者bfs写出一个求最大流的算法,但效率并不高,这时候有人告诉你,这样这样这样写效率就会高了——最短增广路算法,至于为什么效率高了,可以看复杂性证明,反正我是没看,我关心的是这个算法是怎么被想出来的,可惜没人能告诉我。
2008-02-02 00:28
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
得分:0 
昨天晚上看了一晚上<算法艺术>的网络流部分,结果我发现那属于图论的一部分,可是我对图论还没有进一步学习(只是在2006年8月看过几个基本的图算法),因此在第一次发帖中就将图放在外面.
网络流很神奇啊,复杂度这么小,同时可以解决许多搜索严重超时的问题.日后重新进一步学习图论后一定好好看看这部分

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-02-02 08:12
lingluoz
Rank: 2
来 自:苏州科技学院
等 级:新手上路
威 望:4
帖 子:749
专家分:0
注 册:2008-2-2
得分:0 
好神奇啊
2008-02-02 10:29
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
得分:0 
约瑟夫环常规解法时间复杂度和空间复杂太让人受不了了,有没有更简单的算法?
2008-02-03 19:31
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
得分:0 
有更好的解法
以下转载内容关于约瑟夫问题:

约瑟夫问题的数学解法
对于约瑟夫问题,无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm)
当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的。
问题描述:n个人(编号1~n),从1开始报数,报到m的退出,剩下的人继续从1开始报数. 求胜利者的编号
我们知道第一个人(编号一定是(m-1) mod n+1) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环
(以编号为k=m mod n+1的人开始):
k k+1 k+2 ... n-1, n, 1, 2, ... k-2
并且从k开始报1

现在我们把他们的编号做一下转换:
k   --> 1
k+1   --> 2
k+2   --> 3
...
...
k-2   --> n-1
变换后就完完全全成为了(n-1)个人报数的子问题,假如我们知道这个子问题的解:例如x是最终的胜利者,那么根据上面这个表把这个x变回去不刚好就是n个人情况的解吗!

变回去的公式,x' =(x+k-2) mod n+1
            =(x+m mod n-1) mod n+1
            =(x+m-1) mod n+1
如何知道(n-1)个人报数的问题的解?对,只要知道(n-2)个人的解就行了。(n-2)个人的解呢?当然是先求(n-3)的 情况 ---- 这显然就是一个倒推问题!

思路出来了,下面写递推公式:

令f[i]表示i个人玩游戏报m退出最后胜利者的编号

递推公式
f[1]=1;
f[i]=(f[i-1]+m-1) mod i+1; (i>1)


p.s: f[i]=(f[i-1]+k-2) mod i+1 也可以,但先要算出k:=m mod i+1
这个算法的时间复杂度为O(n),相对于模拟算法已经有了很大的提高。算n,m等于一百万,一千万的情况不是问题了

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-02-03 19:39
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
得分:0 
大概意思懂了,具体的数学推导还没演算,明天早上起床后再演算一下。强烈鄙视教科书和中国教育。
2008-02-03 21:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-199301-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028103 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved