一些解决问题的建议

1.确保自己真正了解相关问题。

包括输入什么,输出什么,两者之间是什么关系。然后试着用您所熟悉的数据结构(如某种序列或图结构)来表示该问题的实例。此外,有时候先直接提出一个简单粗暴的解决方案也有助于您理清问题的实质内容。


2.找到一种归简方法。

您是否能将相关输入转换成另一个已解决问题的输入?以及能让其输出结果为己所用?

您能否将某个问题的实例的规模由n归简至k(k<n),并在展开递归解决方案时将其反推回n。


3.看看是否有额外的假设条件可用。

例如,在一定范围内的整数排序比任意值的排序操作更有效率,在某个DAG中寻找最短路径比任意图结构中找要容易。

=======================================================================================

寻找一种最适用的算法,这需要我们一种认识问题的角度和模式,然后扫描我们记忆档案中与之相关的算法,与构建某个算法来解决问题不同,我们现在构建的算法是用来转化相关问题实例,并使之能用现存算法来解决的。系统地处理相关问题和算法显然要比我们等待某些灵感来得更有成效。


归简法:

1.归简成一个完全不同的问题,用某个现存的方法来解决。

2.归纳法:归简成一个或多个子问题(其实是同一个问题的更小型的实例)

弱归纳法:将问题转变成n-1规模的子问题。

强归纳法:将子问题转化成任何k<n的规模。


=========================================================================================

困难度证明:

如果我们可以将问题A归简为问题B。我们就知道如果B是简单的,A就必然同样是简单的。

因为:通过容易的归简法,我们可以用解决B的方式来解决A。


换位法:

如果A是个难题,B就也会是个难题。如果A能被归简为B,B就至少要和A是同等难度的问题。


当我们遇到一个全新的未知问题X时,如果已知一个难题Y。如果Y能归简为X,那么X一定是是个难题。否则,我们就能通过X很容易地解决Y,这与条件矛盾。


===========================================================================================

松弛法:

是个数学术语,这些方法会通过逐步接近的方式来获得相关问题的最佳解法。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值