Questions tagged «algorithms»

算法是定义明确的问题解决方案的一系列明确定义的步骤。如果您的问题与算法的设计和分析有关,请使用此标签。

4
算法计算数字是否为3的倍数
在进行心理演算时,可以做到: 给定整数k,将所有数字加起来(以10为底),如果结果为3的倍数,则k为3的倍数。 您是否知道有任何算法工作类似,但对二进制数字(位)进行运算? 最初,我正在考虑使用我的语言的现成函数将整数转换为ascii,以执行从2到10的转换,然后应用心理演算技巧。但是当然我也可以自己将基本转换2编码为10。我还没有做,但是我会尝试的。 然后我想到了以2为底的欧几里得分法... 但是我想知道是否还有其他手段,算法。
13 algorithms 

4
DAG的传递还原
我正在寻找O(V + E)算法来找到给定DAG 的传递减少。 那就是删除尽可能多的边,这样,如果您可以从u到达v,则对于任意v和u,在去除边之后仍然可以到达。 如果这是标准问题,请向我指出一些模型解决方案。
13 algorithms  graphs  dag 


2
三重嵌套循环的时间复杂度
请考虑以下三重嵌套循环: for (int i = 1; i <= n; ++i) for (int j = i; j <= n; ++j) for (int k = j; k <= n; ++k) // statement 此处的语句正好执行n (n + 1 )(n + 2 )6n(n+1)(n+2)6n(n+1)(n+2)\over6次 有人可以解释一下该公式是如何获得的吗?谢谢。


1
溢出安全求和
假设我给了固定宽度的整数(即它们适合宽度w的寄存器),a_1,a_2,\点a_n,使得它们的和a_1 + a_2 + \ dots + a_n = S也适合宽度w的寄存器。nnna 1,a 2,… a n a 1 + a 2 + ⋯ + a n = S wwwwa1,a2,…ana1,a2,…ana_1, a_2, \dots a_na1+a2+⋯+an=Sa1+a2+⋯+an=Sa_1 + a_2 + \dots + a_n = Swww 在我看来,我们总是可以将数字置换为b1,b2,…bnb1,b2,…bnb_1, b_2, \dots b_n,以便每个前缀和Si=b1+b2+⋯+biSi=b1+b2+⋯+biS_i = b_1 + b_2 + \dots + b_i也适合宽度为w的寄存器www。 …

1
分析纸牌游戏《战争》的修改版
一个通常由儿童玩的简单游戏,战争游戏由两个人使用标准的52张纸牌玩。最初,牌组被洗牌,所有牌都发给了两个玩家两张,因此每张都有随机顺序的26张随机卡。我们假设允许玩家检查(但不能更改)两个牌组,以便每个玩家都知道两个牌组中的纸牌和纸牌顺序。这通常是在实践中完成的记录,但不会改变游戏的玩法,并有助于使该问题的版本完全确定。 然后,玩家展示各自卡组中最上面的卡。露出较大牌的玩家(按照通常的顺序:2、3、4、5、6、7、8、9、10,Jack,Queen,King和Ace)赢得回合,首先将其牌(高牌),然后是对手牌底部的对手牌(低牌)(通常不执行此顺序,而是为了使该问题的第一个版本保持确定性,例如订单将被强制执行)。 如果出现平局,则每个玩家从其牌组顶部再显示四张额外的牌。如果一个玩家显示的第四张牌高于另一位玩家显示的第四张牌,则具有较高第四张牌的玩家将赢得决胜局中所有已玩过的牌,在这种情况下,获胜者的牌首先被放置在获胜者的牌(按照先进先出的顺序;换句话说,较旧的牌排在最底部),其次是败者的牌(以相同的顺序)。 在随后的平局中,重复此过程,直到确定平局获胜者为止。如果一名玩家用完了纸牌并且无法继续打破平局,则仍然拥有纸牌的玩家被宣布为获胜者。如果两个玩家都用完纸牌同时玩游戏,则该游戏被视为平局。 进行回合,直到一名玩家的纸牌用完(即,他的牌组中没有更多的纸牌),此时仍拥有纸牌的玩家被宣布为获胜者。 到目前为止,已经对游戏进行了描述,因此,确定结果并不涉及技巧和运气。由于有52张牌的排列有一定数量的限制,因此可以有一定数量的初始套牌发行方式,并且随之而来(因为游戏中唯一的状态信息是两个玩家的套牌的当前状态)每个游戏配置的结果都可以事先确定。当然,有可能赢得战争游戏,并且以同样的理由失去它。我们也没有保留战争游戏可能导致并列或无限循环的可能性。对于上述完全确定性版本,可能会或可能不会。 尝试使游戏变得更有趣的几种变体(不,并非全部都涉及将其变成饮酒类游戏)。我想让游戏变得更有趣的一种方法是允许玩家在某些回合中声明自动“王牌”。在每个回合中,任何一个球员(或两个球员)都可以宣布“王牌”。如果一个玩家宣布“王牌”,则该玩家将赢得该回合,而与所玩的牌无关。如果两个玩家都宣布“王牌”,则该回合被视为平局,比赛继续进行。 可以想象有多种规则限制玩家的胜败能力(无限的胜局总会导致并列游戏,因为玩家每回合都会胜出)。我根据这个想法提出了两个版本的战争(就在我脑海中;更有趣的版本是可能的),但使用了不同的王牌限制机制: ķkk ķkk 现在,这些问题适用于上述每个版本: 是否存在一种策略,对于某些可能的初始游戏配置,使用该策略的玩家始终会获胜(强烈获胜策略)?如果是这样,这是什么策略?如果没有,为什么不呢? 是否有一种策略,对于某些可能的初始游戏配置,使用该策略的玩家始终可以赢得或强制平局(获胜策略)?如果是这样,这是什么策略?如果没有,为什么不呢? 小号SSS′S′S' 明确地说,我认为“策略”是一种固定算法,它确定使用策略的玩家应该胜过几轮。例如,“只要有可能就干脆”算法是一种策略,也是一种算法(启发式算法)。我要问的另一种方式是: 玩这些游戏是否有任何好的(或证明是最佳的)试探法? kkkk=0k=0k=0

2
识别与段落中日期有关的事件
是否存在一种算法方法来确定段落中给定的日期与段落中的特定事件(短语)相关? 示例,请考虑以下段落: 1970年6月,这位伟大的领袖宣誓就职。但是直到1972年5月国务卿去世后,他才接管了国家的the绳。在1980年中期之前,他一直得到民众的支持,但此后,他的影响力开始下降。 是否有一种算法(确定性或随机性)#可以生成2元组(日期,事件),而该段落暗示该事件发生在该日期上?在上述情况下: (1970年6月,伟大的领袖宣誓) (1972年5月,接任the绳) 甚至更好 (1972年5月,伟大的领导人接管了ins绳) (1980年,影响力下降) #后来加法

1
随机数独生成器
我想生成一个完全随机的数独。 将Sudoku网格定义为的1到9之间整数的网格,其中一些元素可以省略。如果有一种独特的方法可以完成网格以匹配Sudoku约束(每行,每列和对齐的3 × 3正方形都没有重复的元素),并且在这方面是最小的(即,如果您省略了更多的话),则网格是一个有效的难题。元素拼图有多种解决方案)。9×99×99\times91119993×33×33\times3 如何生成随机数独谜题,以使所有数独谜题都具有等价性?

1
一致性如何暗示试探法也是可以接受的?
启发式函数是...h (n )h(n)h (n) 一致的,如果从节点的估计成本的目标是不大于步骤成本其继任者ñ “加上从后继目标的估计成本。nnnn′n′n' 容许的,如果从来没有高估了真实成本的目标状态。h(n)h(n)h(n) 我的人工智能课程的教科书指出,一致性比可接纳性要强,但并不能证明这一点,因此我很难提出数学解释。


4
Dijsktra算法应用于旅行商问题
我是新手(计算复杂度理论的新手),我有一个问题。 假设我们有“旅行推销员问题”,Dijkstra算法的以下应用程序能否解决? 从起点开始,我们计算两点之间的最短距离。我们到了重点。我们删除源点。然后我们计算距当前点的下一个最短距离点,依此类推... 在移动下一个可用的最短距离点时,每一步都会使图形变小。直到我们访问所有要点。 这将解决旅行商的问题。

2
PTAS定义与FPTAS
从我在 preliminary version of a chapter of the book “Lectures on Scheduling” edited by R.H. M¨ohring, C.N. Potts, A.S. Schulz, G.J. Woeginger, L.A. Wolsey, to appear around 2011 A.D. 这是PTAS定义: 问题X的多项式时间近似方案(PTAS)是一种近似方案,其时间复杂度是输入大小的多项式。XXX 和FPTAS定义 问题X的完全多项式时间近似方案(FPTAS) 是一种近似方案,其时间复杂度在输入大小上是多项式,在1 / ϵ中也是多项式。XXXϵϵ\epsilon 然后作者说: 因此,对于PTAS,时间复杂度与成正比是可以接受的。我| 1 / ϵ|I|1/ϵ|I|1/ϵ|I|^{1/\epsilon}其中|I||I||I|是输入大小;尽管这次的复杂度是指数级1/ϵ1/ϵ1/\epsilon。一个FPTAS不能在呈指数级增长一个时间复杂度1/ϵ1/ϵ1/\epsilon但时间复杂度成正比|I|8/ϵ3|I|8/ϵ3|I|^8/\epsilon^3会很好。对于最坏情况的近似,FPTAS是我们可以为NP-hard问题得出的最强结果。 然后,他建议使用下图说明问题类别之间的关系: 这是我的问题: 从PTAS和FPTAS的定义来看,作者如何得出FPTAS的时间复杂度不能以指数增长的结论?如果可以具有这样的时间复杂度,那会有什么区别呢?1/ϵ1/ϵ1/\epsilon 像甲时间复杂度是可以接受的FPTAS但它不是用于PTAS,那么为什么FPTAS被认为是一个子集PTAS?(n+1/ϵ)3(n+1/ϵ)3(n+1/\epsilon)^3 他的意思是:FPTAS是我们可以解决NP难题的最强结果。 总的来说,我想知道这些概念到底意味着什么,以及它们的独特属性是什么。 提前致谢。

3
抽象游戏的最佳策略
在一次采访中,我遇到了以下问题(我已经解决不了,没有试图欺骗自己):游戏从一个正整数。(例如)此数字转换为二进制表示形式,而是设置为的位数。(例如,)A0A0A_0A0=1234A0=1234A_0 = 1234NNN111A0=b100 1101 0010A0=b100 1101 0010A_0 = b100\ 1101\ 0010N=5.N=5.N = 5. 玩家1选择一个比小的数字。只能将一位设置为1。(例如)令。(例如)如果满足先前的约束,并且设置的位数仍然等于N,则移动有效。B0B0B_0A0A0A_0B0B0B_0B0=b10 0000 0000=512B0=b10 0000 0000=512B_0 = b10\ 0000\ 0000 = 512A1=A0−B0A1=A0−B0A_1 = A_0 - B_0A1=1234−512=722=b1011010010A1=1234−512=722=b1011010010A_1 = 1234-512 = 722 = b10 1101 0010B0B0B_0A1A1A_1 玩家2通过选择有效的从继续,然后玩家1从继续,依此类推。如果没有有效的动作,则玩家将输。A1A1A_1B1B1B_1A2A2A_2 假设两个玩家都发挥最佳状态,则使用合理有效的方法确定获胜玩家。(在我的问题定义中,对此的限制是程序必须能够为容纳有符号的32位整数的数百万个输入数字提供解决方案。)也就是说,解决方案不需要完全分析。 我个人的兴趣是弄清楚我对找到并实施正确解决方案的期望是否合理,而在给出的120分钟内却没有关于正确性的反馈。或者这是那些“让我们看看他们之前是否曾经看过这个难题”之一。 我失败了,因为我选择实施一种看似合理的策略,这给了我一些预先给出的测试用例正确的结果,浪费了太多时间使它快速运行,最终导致错误的处理我的时间用完了。 回想起来,我应该对小数目的起始号码实施强力搜索并记住部分解决方案,但是事后看来总是20/20。我很好奇,但是是否有一种另类的通用方法使我无法成为一个蓬松的人。

1
对鲁珀特来说,包装一袋礼物比圣诞老人容易吗?
或者:我们是否需要鲁珀特才能获得礼物? 除了路由问题之外,圣诞老人还面临以下问题(很多次都过去了): 给定一个容量为的袋子和一组礼物{ p 1,… ,p n },每个礼物的大小为s i,他希望使孩子{ c 1,… ,c k }开心。他从所有的愿望清单知道孩子ç Ĵ值目前p 我正好v 我,Ĵ ∈ Q ≥ 0得多。CCC{p1,…,pn}{p1,…,pn}\{p_1, \dots, p_n\}sisis_i{c1,…,ck}{c1,…,ck}\{c_1, \dots, c_k\}cjcjc_jpipip_ivi,j∈Q≥0vi,j∈Q≥0v_{i,j} \in \mathbb{Q}_{\geq 0} 这(两两不相交)套礼物挑选为每一个孩子,使一切都适合,即Ij⊆[1..n]Ij⊆[1..n]I_j \subseteq [1..n] ,∑j∈[1..k]∑i∈Ijsi≤C∑j∈[1..k]∑i∈Ijsi≤C\qquad\displaystyle \sum_{j \in [1..k]} \sum_{i \in I_j} s_i \leq C 随之而来的是尽可能多的幸福²,即 max!∑j∈[1..k]∑i∈Ijvi,jmax!∑j∈[1..k]∑i∈Ijvi,j\qquad\displaystyle \max! \sum_{j \in [1..k]} \sum_{i \in I_j} …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.