算法难度分级
㈠ 整数分解的难度与复杂度
复杂性等级。
我们知道这个问题的判定问题形式(“请问N是否有一个比M小的因子?”)是在NP与co-NP之中。因为不管是答案为是或不是,我们都可以用一个质因子以及该质因子的质数证明来验证这个答案。由 肖 的算法,我们得知这个问题在BQP中。大部份的人则怀疑这个问题不在P、NP-Complete、以及co-NP-Complete这三个复杂性类别中。如果这个问题可以被证明为NP-Complete或co-NP-Complete,则我们便可推得NP=co-NP。这将会是个很震撼的结果,也因此大多数人猜想整数分解这个问题不在上述的复杂性类别中。也有许多人尝试去找出多项式时间的算法来解决这个问题,但是都尚未成功,因此这个问题也被多数人怀疑不在P中。
有趣的是,当判定问题为“N是否为一合数?”则比要找出N的因子这个问题要简单的许多。有文章[1]指出前者这个问题可以在多项式时间中解决(其中n为N的位数)。若允许微小的失误,更有许多的随机化算法可以非常快速的测试出一个数是否为质数。测试一个数是否质数不难,这是RSA算法中非常重要的一环,因为它在一开始的时后需要找很大的质数。(参见素性测试)。
㈡ 迪杰斯特拉算法难度什么水平
迪杰斯特拉算法难度是一般水平。迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959年提出的,是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法的主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。迪杰斯特拉算法的成功率是最高的,因为它每次必能搜索到最优路径。但迪杰斯特拉算法算法的搜索速度是最慢的。
㈢ 难度系数和区别系数的意义和算法。
我晕。。自问自答还不行。。
把试题收录到试题库前,往往需要先进行多次测试,符合要求的才录入。而判断的依据主要有二:难度系数和区别系数。
另外,每一次考完试后,老师也应该对试卷从难度和区别力上进行分析,以帮助找出教学和命题中的不足。
什么是试题难度系数?难度系数反映试题的难易程度,即考生在一个试题或一份试卷中的失分程度。
考试难度系数计算公式如下:
Dc=1-A/T
Dc:难度系数 A:考生平均得分(如计算总体难度系数,则为全卷平均分;如计算单题难度系数,则为本题平均分) T:满分
举例:
总体难度系数:一份满分100分的试卷,考生平均得分78分,则难度系数为1-78/100=0.22
单题难度系数:一道题值2分的试题,考生平均得分1.5分,则难度系数为1-1.5/2=0.25
至于一道题或一份试卷的难度系数到底多少为宜,要根据不同的命题需要来选择。而且,即使同一套试题,不同的答题人群做完后计算出的难
度系数也是不同的。理想的难度系数以控制在0.2左右为宜。
什么是试题区别系数?区分系数反映试题区分不同水平受试者的能力,即能否考出学生的不同水平,把优秀、一般、差三个层次的学生真正分
别开。
试题区别系数计算公式如下:
先把成绩从高到低排序,前50%的考生为高分组,后50%为低分组,(样本大的时候,也可以取前、后各20%。)
Dr=2(Ah-Al)/T
Dr:区别系数 Ah:高分组平均分 Al:低分组平均分 T:满分
举例:
总体区别系数:一份满分100分的试卷,高分组平均得分90分,低分组平均得分60分,则区别系数为2(90-60)/100=1.7
单题难度系数:一道题值2分的试题,高分组平均得分1.5分,低分组平均得分0.5分,则区别系数为2(1.5-0.5)/2=1
由于受多种随机因素如:遗传、智力、个性、时间、教师、努力的程度等的影响,考试成绩一般应呈正态分布。区分系数高的考试,优秀、一
般、差三个层次的学生都有一定比例,如果某一分数区间学生相对集中,高分太多或不及格太多的考试,区分系数则低。理想的区别系数以控
制在1.5左右为宜。某些重要的、学生应知应会的必考知识点,单题难度系数允许为“0”。
㈣ 算法怎么就这么难
推荐书籍:数据结构与算法分析:C语言描述
可以多看书多做题哦,或者关注我们的v信宫仲号《ACM算法日常》,有很多算法学习的资料~
㈤ 算法难学么
真正的算法学习起来,存在一定的难度的,坚持很重要,毕竟里面的东西的学习,需要耐心去看不能只是三分钟的热度基本学不会,毕竟算法的学习需要注意力高度集中,不停的烧脑学习。不适合学习一段时间就轻易放弃的人,所以没点毅力根本就学不好算法,更加谈不上学习编程了。
以上资料仅供参考。
㈥ 信度,效度,难度,区分度怎么算
信度,效度,难度,区分度的算法如下:
1、效度
效度是指测量的正确性,即一个测验能够测量出其所要测量的东西的程度。就一个测验的优劣而言,效度是一个比信度更为重要的指标。
例如:想知道小明数学学得如何,用语文试卷来测,不能测量出想测量的东西,效度较差。
2、信度
信度是指测验结果的稳定性或可靠性,即某一测验在多次施测后所得到的分数的稳定、一致程度。它既包括在时间上的一致性,也包括内容和不同评分者之间的一致性。
例如:同一量表某人前后几次施策得出分数十分接近,信度较高。
3、难度
难度是指测验包含的试题难易程度。在教学测量中,通常用答对或通过测验的人数比例作为难度值。难度值(P)=答对人数(R)/被试总人数(N)×100%。P值越大,难度越低;P值越小,难度越高。一般来说,难度值平均在0.5最佳。
4、区分度
区分度有时也称鉴别力,主要指测验对于不同水平的被试加以区分的能力。区分度与难度有关,只有在试卷中包含有不同难度的试题,才能提高区分度,拉开考生得分的差距。
㈦ 难度和复杂度怎么写
难度和复杂度书写方法如下。复杂度可以被感知,影响也被普遍认可,然而对于复杂度却没有统一的定义,当然也没有统一的衡量方式,可以参考不同人的理解。但是对于软件不同的侧面,可以定义不同的复杂度,可以帮助了解某一个侧面或者一个点的复杂度。比如衡量算法的时间复杂度,常用大O来表示。算法的空间复杂度。下面介绍一个常用的衡量代码复杂的函数的圈复杂度。
㈧ 程序员必须掌握哪些算法
一.基本算法:
枚举. (poj1753,poj2965)
贪心(poj1328,poj2109,poj2586)
递归和分治法.
递推.
构造法.(poj3295)
模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)
二.图算法:
图的深度优先遍历和广度优先遍历.
最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra)
(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)
最小生成树算法(prim,kruskal)
(poj1789,poj2485,poj1258,poj3026)
拓扑排序 (poj1094)
二分图的最大匹配 (匈牙利算法) (poj3041,poj3020)
最大流的增广路算法(KM算法). (poj1459,poj3436)
三.数据结构.
串 (poj1035,poj3080,poj1936)
排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299)
简单并查集的应用.
哈希表和二分查找等高效查找法(数的Hash,串的Hash)
(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)
哈夫曼树(poj3253)
堆
trie树(静态建树、动态建树) (poj2513)
四.简单搜索
深度优先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)
广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414)
简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129)
五.动态规划
背包问题. (poj1837,poj1276)
型如下表的简单DP(可参考lrj的书 page149):
E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)
E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列) (poj3176,poj1080,poj1159)
C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题)
六.数学
组合数学:
1.加法原理和乘法原理.
2.排列组合.
3.递推关系.
(POJ3252,poj1850,poj1019,poj1942)
数论.
1.素数与整除问题
2.进制位.
3.同余模运算.
(poj2635, poj3292,poj1845,poj2115)
计算方法.
1.二分法求解单调函数相关知识.(poj3273,poj3258,poj1905,poj3122)
七.计算几何学.
几何公式.
叉积和点积的运用(如线段相交的判定,点到线段的距离等). (poj2031,poj1039)
多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交)
(poj1408,poj1584)
凸包. (poj2187,poj1113)
中级(校赛压轴及省赛中等难度):
一.基本算法:
C++的标准模版库的应用. (poj3096,poj3007)
较为复杂的模拟题的训练(poj3393,poj1472,poj3371,poj1027,poj2706)
二.图算法:
差分约束系统的建立和求解. (poj1201,poj2983)
最小费用最大流(poj2516,poj2516,poj2195)
双连通分量(poj2942)
强连通分支及其缩点.(poj2186)
图的割边和割点(poj3352)
最小割模型、网络流规约(poj3308)
三.数据结构.
线段树. (poj2528,poj2828,poj2777,poj2886,poj2750)
静态二叉检索树. (poj2482,poj2352)
树状树组(poj1195,poj3321)
RMQ. (poj3264,poj3368)
并查集的高级应用. (poj1703,2492)
KMP算法. (poj1961,poj2406)
四.搜索
最优化剪枝和可行性剪枝
搜索的技巧和优化 (poj3411,poj1724)
记忆化搜索(poj3373,poj1691)
五.动态规划
较为复杂的动态规划(如动态规划解特别的旅行商TSP问题等)
(poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)
记录状态的动态规划. (POJ3254,poj2411,poj1185)
树型动态规划(poj2057,poj1947,poj2486,poj3140)
六.数学
组合数学:
1.容斥原理.
2.抽屉原理.
3.置换群与Polya定理(poj1286,poj2409,poj3270,poj1026).
4.递推关系和母函数.
数学.
1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222)
2.概率问题. (poj3071,poj3440)
3.GCD、扩展的欧几里德(中国剩余定理) (poj3101)
计算方法.
1.0/1分数规划. (poj2976)
2.三分法求解单峰(单谷)的极值.
3.矩阵法(poj3150,poj3422,poj3070)
4.迭代逼近(poj3301)
随机化算法(poj3318,poj2454)
杂题(poj1870,poj3296,poj3286,poj1095)
七.计算几何学.
坐标离散化.
扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用)
(poj1765,poj1177,poj1151,poj3277,poj2280,poj3004)
多边形的内核(半平面交)(poj3130,poj3335)
几何工具的综合应用.(poj1819,poj1066,poj2043,poj3227,poj2165,poj3429)
高级(regional中等难度):
一.基本算法要求:
代码快速写成,精简但不失风格
(poj2525,poj1684,poj1421,poj1048,poj2050,poj3306)
保证正确性和高效性. poj3434
二.图算法:
度限制最小生成树和第K最短路. (poj1639)
最短路,最小生成树,二分图,最大流问题的相关理论(主要是模型建立和求解)
(poj3155, poj2112,poj1966,poj3281,poj1087,poj2289,poj3216,poj2446
最优比率生成树. (poj2728)
最小树形图(poj3164)
次小生成树.
无向图、有向图的最小环
三.数据结构.
trie图的建立和应用. (poj2778)
LCA和RMQ问题(LCA(最近公共祖先问题) 有离线算法(并查集+dfs) 和 在线算法(RMQ+dfs)).(poj1330)
双端队列和它的应用(维护一个单调的队列,常常在动态规划中起到优化状态转移的目的). (poj2823)
左偏树(可合并堆).
后缀树(非常有用的数据结构,也是赛区考题的热点).(poj3415,poj3294)
四.搜索
较麻烦的搜索题目训练(poj1069,poj3322,poj1475,poj1924,poj2049,poj3426)
广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储状态、双向广搜、A*算法. (poj1768,poj1184,poj1872,poj1324,poj2046,poj1482)
深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大、可以考虑双向搜索或者是轮换搜索、IDA*算法. (poj3131,poj2870,poj2286)
五.动态规划
需要用数据结构优化的动态规划.(poj2754,poj3378,poj3017)
四边形不等式理论.
较难的状态DP(poj3133)
六.数学
组合数学.
1.MoBius反演(poj2888,poj2154)
2.偏序关系理论.
博奕论.
1.极大极小过程(poj3317,poj1085)
2.Nim问题.
七.计算几何学.
半平面求交(poj3384,poj2540)
可视图的建立(poj2966)
点集最小圆覆盖.
对踵点(poj2079)
㈨ 如何判断算法优劣
算法的好坏是看它的运行效率比如递归一般来说是比较耗时间的,也就是说效率低当然也看具体情况,有的算法在基数小的情况是差不多,性能反而还好点
㈩ 数独的难度划分
数独的难度不好评价,因为它的各种局面互不相关,你别想用一种方法解决所有数独,这也是它的魅力所在,有人爱玩数独,因为他上瘾了,真的欲罢不能。
数独的推理性强,像一些数学思想,推理,假设,反证(找矛盾)都有影子,换成计算机,它也做类似的事情,推理和假设变成搜索,反证变成回溯,做一件数学工作,难度就体现在这些基本的工作重复了多少,越多越难,如果推两下就出结果,那就容易,所以……
就一般性的数独难度,拿两个指标来衡量,搜索次数s和回溯次数t,t越大越难,但和s也有关系,应该描述成回溯率,比如同样是回溯了10次,一个是20次的搜索,另一个是80次的搜索,那难度应该不同。换个思路,t可以看成是无效搜索,它一定是s的一子集,即t<=s,如果t=s就表示无解,回退到了一开始的情况,而难度应该和有效搜索有关系,有效搜索比率就定义为难度系数,即h=(s-t)/s,它是[0,1]内的小数,它越小越难,那对一个难度的评价,可以取它的倒数,或者负对数,怎么表示好,看实验情况。
其它因素。科学的评价,应该要考虑其它因素,像空格数,做为初学者就会觉得很重要,还有各个空格的不确定度,但是这些因素都会或多或少的影响到s和t。这里评价的前提是按照同样的搜索算法,那个算法和不确定度有关系,所以也可以反映出来。
总结出来,评价的具体方法是,运用偶的搜索算法试解一个数独,在调用dfs时s计数加一,在dfs退出时t计数加一,在搜索到第一个解时停止统计,计算h,给出s,t和h。