一些解决问题的建议
2017-06-12 19:51
169 查看
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,这与条件矛盾。
===========================================================================================
松弛法:
是个数学术语,这些方法会通过逐步接近的方式来获得相关问题的最佳解法。
包括输入什么,输出什么,两者之间是什么关系。然后试着用您所熟悉的数据结构(如某种序列或图结构)来表示该问题的实例。此外,有时候先直接提出一个简单粗暴的解决方案也有助于您理清问题的实质内容。
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,这与条件矛盾。
===========================================================================================
松弛法:
是个数学术语,这些方法会通过逐步接近的方式来获得相关问题的最佳解法。
相关文章推荐
- 想交一些朋友。 特别是刚接触java的初学者,可以给你们解决一些小问题。 最近遇到瓶顶,希望前辈给一些建议
- 构、搜索、性能等技术角度分析了电子商务网站重点要解决的几个问题,并给出一些建议和方案
- 写程序时解决问题的方式说明与一些建议
- 一些常见的问题与解决代码!(精典) 1
- [建议] 提问区的文章加入问题的解决方法/方案
- 解决Windows 程序界面闪烁问题的一些经验
- 解决Windows 程序界面闪烁问题的一些经验
- 一些常见的问题与解决代码!(精典) 2
- 深入剖析Java编程中的中文问题及建议最优解决方法---下篇
- 关于tomcat服务器优化,常遇到的一些简单问题的解决方法 (z)
- WinXP下安装SoftIce的一些问题解决方法【原创】
- 一些常见的问题与解决代码!(精典) 3
- 深入剖析Java编程中的中文问题及建议最优解决方法
- 解决Windows 程序界面闪烁问题的一些经验 (转载)
- 深入剖析Java编程中的中文问题及建议最优解决方法---上篇
- 中文问题的一些建议,转载,那里找的,忘记了
- 解决java中文问题的一些资源
- 深入剖析Java编程中的中文问题及建议最优解决方法--下篇
- 一些常见的问题与解决代码!(精典) 4
- js一些常见的问题与解决代码(2)(转自www.51js.com)