算法设计与分析2017级自做答案

2017《算法设计与分析》A卷自做答案


选择题

1.C

如果可满足性约化为一个问题L,则称L是NP-难度的。如果L是NP难度的且L属于NP,则称问题L是NP完全的

从计算时间上可以把算法分成两类,多项式时间算法和指数时间算法。

2.C

3.D

4.B

宽度优先无限界 D检索 深度优先无限界 深度优先 宽度优先有限界 分支-限界 深度优先有限界 回溯法

5.C

简答题

∑ i = 1 16 L E S S ( i ) + X = 12 + 1 + 1 + 8 + 2 + 10 + 6 + 4 + 4 + 5 + 1 + 1 + 2 + 1 + 1 = 59 {\sum}_{i=1}^{16}LESS(i)+X=12+1+1+8+2+10+6+4+4+5+1+1+2+1+1=59 i=116LESS(i)+X=12+1+1+8+2+10+6+4+4+5+1+1+2+1+1=59

是奇数,所以不能到达目标状态。

n = 2 k n=2^k n=2k
T ( n ) = 4 T ( n / 2 ) + n = 4 ( 4 T ( n / 4 ) + n / 2 + n ) = . . . = 2 k ( T ( n / 2 k ) ) + ( 2 k − 1 ) ∗ n = O ( n 2 ) T(n)=4T(n/2)+n=4(4T(n/4)+n/2+n)=...=2^k(T(n/2^k))+(2^k-1)*n=O(n^2) T(n)=4T(n/2)+n=4(4T(n/4)+n/2+n)=...=2k(T(n/2k))+(2k1)n=O(n2)
3.

答:不一定,可能会出现成本估计函数c(Y)>C(Z)但是C(Y)<C(Z)的情况,需要使用LC1函数选取成本估值函数作为成本函数的下界,这样才能找到最小成本函数。(请看慕课LC解锁特性)

证明题

1.若存在两个正常数c和 n 0 n_0 n0,对于所有的 n ≥ n 0 n \geq n_0 nn0,有 ∣ f ( n ) ∣ ≥ c ∣ g ( n ) ∣ |f(n)| \geq c|g(n)| f(n)cg(n),则记做 f ( n ) = Ω ( ( g ( n ) ) ) f(n)=\Omega((g(n))) f(n)=Ω((g(n))),称g(n)为f(n)的渐近下限。

证明:设置 h 1 ( x ) = Ω ( f ( n ) ) 、 h 2 ( x ) = Ω ( g ( n ) ) h1(x)=\Omega{(f(n))}、h2(x)=\Omega{(g(n))} h1(x)=Ω(f(n))h2(x)=Ω(g(n)),则有 ∣ f ( n ) ∣ ≥ c 1 ∣ h 1 ( n ) ∣ |f(n)| \geq c1|h1(n)| f(n)c1h1(n) ∣ g ( n ) ∣ ≥ c 2 ∣ h 2 ( n ) ∣ |g(n)| \geq c2|h2(n)| g(n)c2h2(n) m i n ( f ( n ) , g ( n ) ) ≥ c 1 ∣ h 1 ( n ) ∣ + c 2 ∣ h 2 ( n ) ∣ ≥ ( c 1 + c 2 ) m i n ( ∣ h 1 ( n ) ∣ , ∣ h 2 ( n ) ∣ ) min(f(n),g(n))\geq{c1|h1(n)|+c2|h2(n)|\geq{(c1+c2)min(|h1(n)|,|h2(n)|)}} min(f(n),g(n))c1h1(n)+c2h2(n)(c1+c2)min(h1(n),h2(n))

得证

http://www.doc88.com/p-9734963937737.html

前往此处寻找同样题目

计算题

(1)

首先计算pi/wi的值

(p1/w1,p2/w2,p3/w3.p4/w4)=(5,5/2,2,2)

已经不需要排序

2+4+6<15且2+4+6+9>15

因此X=(1,1,1,1/3)

(2)
S 0 = { ( 0 , 0 ) } S 1 1 = { ( 10 , 2 ) } S 1 = { ( 0 , 0 ) , ( 10 , 2 ) } S 1 2 = { ( 10 , 4 ) , ( 20 , 6 ) } S 2 = { ( 0 , 0 ) , ( 10 , 2 ) , ( 20 , 6 ) } S 1 3 = { ( 12 , 6 ) , ( 22 , 8 ) , ( 32 , 12 ) } S 3 = { ( 0 , 0 ) , ( 10 , 2 ) , ( 20 , 6 ) , ( 22 , 8 ) , ( 32 , 12 ) } S 1 4 = { ( 18 , 9 ) , ( 28 , 11 ) , ( 38 , 15 ) , ( 40 , 17 ) , ( 50 , 21 ) } S 4 = { ( 0 , 0 ) , ( 10 , 2 ) , ( 20 , 6 ) , ( 28 , 11 ) , ( 38 , 15 ) } ( 38 , 15 ) 不 属 于 S 3 , 所 以 一 定 来 自 S 1 3 , 所 以 ( 20 , 6 ) 属 于 S 3 , x 4 = 1 S_0=\{(0,0)\} \\S^1_1=\{(10,2)\} S^1=\{(0,0),(10,2)\} \\S^2_1=\{(10,4),(20,6)\} S^2=\{(0,0),(10,2),(20,6)\} \\S^3_1=\{(12,6),(22,8),(32,12)\} S^3=\{(0,0),(10,2),(20,6),(22,8),(32,12)\} \\S^4_1=\{(18,9),(28,11),(38,15),(40,17),(50,21)\} \\S^4=\{(0,0),(10,2),(20,6),(28,11),(38,15)\} \\(38,15)不属于S^3,所以一定来自S^3_1,所以(20,6)属于S^3,x_4=1 S0={(0,0)}S11={(10,2)}S1={(0,0),(10,2)}S12={(10,4),(20,6)}S2={(0,0),(10,2),(20,6)}S13={(12,6),(22,8),(32,12)}S3={(0,0),(10,2),(20,6),(22,8),(32,12)}S14={(18,9),(28,11),(38,15),(40,17),(50,21)}S4={(0,0),(10,2),(20,6),(28,11),(38,15)}(38,15)S3S13206S3x4=1

( 20 , 6 ) 属 于 S 2 , 所 以 x 3 = 0 ( 20 , 6 ) 不 属 于 S 1 , 所 以 x 2 = 1 , ( 10 , 2 ) 属 于 S 1 综 上 可 以 得 解 X = ( 1 , 1 , 0 , 1 ) (20,6)属于S^2,所以x_3=0 \\(20,6)不属于S^1,所以x_2=1,(10,2)属于S^1 \\综上可以得解X=(1,1,0,1) 206S2x3=0(20,6)S1x2=1,(10,2)S1X=1101

(1)

状 态 空 间 树 节 点 总 数 = 1 + 6 + 6 ∗ 5 + 6 ∗ 5 ∗ 4 + 6 ∗ 5 ∗ 4 ∗ 3 + 6 ∗ 5 ∗ 4 ∗ 3 ∗ 2 + 6 ∗ 5 ∗ 4 ∗ 3 ∗ 2 ∗ 1 = 1 + 6 + 6 ∗ 5 + 120 + 360 + 720 + 720 = 1957 状态空间树节点总数=1+6+6*5+6*5*4+6*5*4*3+6*5*4*3*2+6*5*4*3*2*1=1+6+6*5+120+360+720+720=1957 =1+6+65+654+6543+65432+654321=1+6+65+120+360+720+720=1957

(2)
不 受 限 结 点 数 = 1 + 6 + 6 ∗ 3 + 6 ∗ 3 ∗ 2 + 6 ∗ 3 ∗ 2 ∗ 2 + 6 ∗ 3 ∗ 2 ∗ 2 ∗ 1 = 205 不受限结点数=1+6+6*3+6*3*2+6*3*2*2+6*3*2*2*1=205 =1+6+63+632+6322+63221=205
(3)
比 例 = 205 / 1957 ∗ 100 % = 10.48 % 比例=205/1957*100\%=10.48\% =205/1957100%=10.48%

3.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VKMVMNwu-1596007499452)(C:\Users\HP\Documents\Tencent Files\1102460059\FileRecv\MobileFile\IMG_3251(20200727-151138)].JPG)

(1)
C O S T ( 12 ) = 7 D ( 12 ) = 15 C O S T ( 13 ) = 3 D ( 13 ) = 15 C O S T ( 14 ) = 8 D ( 14 ) = 15 C O S T ( 9 ) = M I N { C ( 9 , 12 ) + C O S T ( 12 ) , C ( 9 , 13 ) + C O S T ( 13 ) , C ( 9 , 14 ) + C O S T ( 14 ) } = M I N { 9 + 7 , 7 + 3 , 4 + 8 } = 10 D ( 9 ) = 13 C O S T ( 10 ) = M I N { C ( 10 , 12 ) + C O S T ( 12 ) , C ( 10 , 13 ) + C O S T ( 13 ) } = M I N { 5 + 7 , 21 + 3 } = 12 D ( 10 ) = 12 C O S T ( 11 ) = M I N { C ( 11 , 12 ) + C O S T ( 12 ) , C ( 11 , 13 ) + C O S T ( 13 ) , C ( 11 , 14 ) + C O S T ( 14 ) } = M I N { 1 + 7 , 17 + 3 , 9 + 8 } = 8 D ( 11 ) = 12 COST(12)=7 D(12)=15 COST(13)=3 D(13)=15 COST(14)=8 D(14)=15 \\COST(9)=MIN\{C(9,12)+COST(12),C(9,13)+COST(13),C(9,14)+COST(14)\}=MIN\{9+7,7+3,4+8\}=10 \\D(9)=13 \\COST(10)=MIN\{C(10,12)+COST(12),C(10,13)+COST(13)\}=MIN\{5+7,21+3\}=12 D(10)=12 \\COST(11)=MIN\{C(11,12)+COST(12),C(11,13)+COST(13),C(11,14)+COST(14)\}=MIN\{1+7,17+3,9+8\}=8 \\D(11)=12 COST(12)=7D(12)=15COST(13)=3D(13)=15COST(14)=8D(14)=15COST(9)=MIN{C(9,12)+COST(12),C(9,13)+COST(13),C(9,14)+COST(14)}=MIN{9+7,7+3,4+8}=10D(9)=13COST(10)=MIN{C(10,12)+COST(12),C(10,13)+COST(13)}=MIN{5+7,21+3}=12D(10)=12COST(11)=MIN{C(11,12)+COST(12),C(11,13)+COST(13),C(11,14)+COST(14)}=MIN{1+7,17+3,9+8}=8D(11)=12

C O S T ( 6 ) = M I N { C ( 6 , 9 ) + C O S T ( 9 ) , C ( 6 , 10 ) + C O S T ( 10 ) , C ( 6 , 11 ) + C O S T ( 11 ) } = M I N { 8 + 10 , 6 + 12 , 8 + 4 } = 12 D ( 6 ) = 11 C O S T ( 7 ) = M I N { C ( 7 , 9 ) + C O S T ( 9 ) , C ( 7 , 11 ) + C O S T ( 11 ) } = M I N { 1 + 10 , 15 + 12 } = 11 D ( 7 ) = 9 C O S T ( 8 ) = M I N { C ( 8 , 9 ) + C O S T ( 9 ) , C ( 8 , 10 ) + C O S T ( 10 ) , C ( 8 , 11 ) + C O S T ( 11 ) } = M I N { 7 + 10 , 8 + 12 , 1 + 8 } = 9 D ( 8 ) = 11 COST(6)=MIN\{C(6,9)+COST(9),C(6,10)+COST(10),C(6,11)+COST(11)\}=MIN\{8+10,6+12,8+4\}=12 \\D(6)=11 \\COST(7)=MIN\{C(7,9)+COST(9),C(7,11)+COST(11)\}=MIN\{1+10,15+12\}=11 D(7)=9 \\COST(8)=MIN\{C(8,9)+COST(9),C(8,10)+COST(10),C(8,11)+COST(11)\}=MIN\{7+10,8+12,1+8\}=9 \\D(8)=11 COST(6)=MIN{C(6,9)+COST(9),C(6,10)+COST(10),C(6,11)+COST(11)}=MIN{8+10,6+12,8+4}=12D(6)=11COST(7)=MIN{C(7,9)+COST(9),C(7,11)+COST(11)}=MIN{1+10,15+12}=11D(7)=9COST(8)=MIN{C(8,9)+COST(9),C(8,10)+COST(10),C(8,11)+COST(11)}=MIN{7+10,8+12,1+8}=9D(8)=11

C O S T ( 2 ) = M I N { C ( 2 , 6 ) + C O S T ( 6 ) , C ( 2 , 7 ) + C O S T ( 7 ) } = M I N { 3 + 12 , 4 + 9 } = 13 D ( 2 ) = 7 C O S T ( 3 ) = M I N { C ( 3 , 6 ) + C O S T ( 6 ) , C ( 3 , 8 ) + C O S T ( 8 ) } = M I N { 12 + 12 , 1 + 9 } = 10 D ( 3 ) = 8 C O S T ( 4 ) = M I N { C ( 4 , 6 ) + C O S T ( 6 ) , C ( 4 , 7 ) + C O S T ( 7 ) , C ( 4 , 8 ) + C O S T ( 8 ) } = M I N { 1 + 12 , 7 + 9 , 9 + 9 } = 13 D ( 4 ) = 8 C O S T ( 5 ) = M I N { C ( 5 , 7 ) + C O S T ( 7 ) , C ( 5 , 8 ) + C O S T ( 8 ) } = M I N { 6 + 9 , 11 + 9 } = 15 D ( 5 ) = 8 COST(2)=MIN\{C(2,6)+COST(6),C(2,7)+COST(7)\}=MIN\{3+12,4+9\}=13 D(2)=7 \\COST(3)=MIN\{C(3,6)+COST(6),C(3,8)+COST(8)\}=MIN\{12+12,1+9\}=10 D(3)=8 \\COST(4)=MIN\{C(4,6)+COST(6),C(4,7)+COST(7),C(4,8)+COST(8)\}=MIN\{1+12,7+9,9+9\}=13 \\D(4)=8 \\COST(5)=MIN\{C(5,7)+COST(7),C(5,8)+COST(8)\}=MIN\{6+9,11+9\}=15 D(5)=8 COST(2)=MIN{C(2,6)+COST(6),C(2,7)+COST(7)}=MIN{3+12,4+9}=13D(2)=7COST(3)=MIN{C(3,6)+COST(6),C(3,8)+COST(8)}=MIN{12+12,1+9}=10D(3)=8COST(4)=MIN{C(4,6)+COST(6),C(4,7)+COST(7),C(4,8)+COST(8)}=MIN{1+12,7+9,9+9}=13D(4)=8COST(5)=MIN{C(5,7)+COST(7),C(5,8)+COST(8)}=MIN{6+9,11+9}=15D(5)=8

C O S T ( 1 ) = M I N { 9 + 13 , 4 + 10 , 3 + 13 , 8 + 15 } = 14 D ( 1 ) = 3 COST(1)=MIN\{9+13,4+10,3+13,8+15\}=14 \\D(1)=3 COST(1)=MIN{9+13,4+10,3+13,8+15}=14D(1)=3

可得最小成本是14

(2)

D(1)=3 D(3)=8 D(8)=11 D(11)=12 D(12)=15

所以路径为1->3->8->11->12->15

设计算法

(1)算法思路,设置一个循环,left>right的时候停止

设置变量p1=right+ ⌊ ( r i g h t − l e f t ) / 3 ⌋ \lfloor(right-left)/3\rfloor (rightleft)/3= ⌊ ( r i g h t + 2 l e f t ) / 3 ⌋ \lfloor(right+2left)/3\rfloor (right+2left)/3

p2=right- ⌊ ( r i g h t − l e f t ) / 3 ⌋ \lfloor(right-left)/3\rfloor (rightleft)/3= ⌊ ( 2 r i g h t + l e f t ) / 3 ⌋ \lfloor(2right+left)/3\rfloor (2right+left)/3

如果要找的数m=A[p1]或者m=A[p2]则返回坐标,否则缩小区域到三分之一

(2)

procedure ThriSearch(A,n,m,j)
integer left=1
integer right=n
integer p1,p2
while(left<=right)
p1=(right+2left)/3
p2=(2right+left)/3
case
    :m=A(p1):
    j=p1;return
    :m=A(p2)
    j=p2;return
    :m<A(p1)
    right=p1-1
    :m>A(p2)
    left=p2+1
    :else low=p1+1 high=p2-1
endcase
repeat
j=0
end ThriSearch

(3)

解:可以得到以下关系
T ( n ) = 1 / / 当 只 有 一 个 元 素 T ( n ) = 2 / / 当 有 两 个 元 素 T ( n ) = T ( n / 3 ) + 2 / / 当 有 两 个 以 上 元 素 设 置 n = 3 k T ( n ) = T ( n / 9 ) + 2 + 2 = T ( n / 3 k ) + 2 k = c + 2 l o g 3 n = O ( l o g 3 ( n ) ) T(n)=1//当只有一个元素 \\T(n)=2//当有两个元素 \\T(n)=T(n/3)+2//当有两个以上元素 \\设置n=3^k \\T(n)=T(n/9)+2+2=T(n/3^k)+2k=c+2log_3n=O(log_3(n)) T(n)=1//T(n)=2//T(n)=T(n/3)+2//n=3kT(n)=T(n/9)+2+2=T(n/3k)+2k=c+2log3n=O(log3(n))

设置

算法策略:

使用dfs 通过递推关系式g(i,S)=min{cij+g(j,s-{j})}得出答案

procedure TSP(integer num,integer i)
global integer shuzu(1...n,1...n)//这里存储了图中各节点之间的距离
global boolean po(1...n)//这里存储的是集合中是否包含该结点,先被初始化为true,po(1)设置成false
integer ans=MAX_VALUE
integer jiedian(100)
jiedian(1)=i
if num=0 return shuzu(i,1)//当集合为空,返回节点到1的值
for x=2 to n by +1
if(po(x)==true)
ans=min(ans,shuzu(i,x)+TSP(num-1,x))
把导致距离最小的节点加入jiedian数组
repeat
return jiedian数组和ans

import java.util.Arrays;
import java.util.Scanner;
public class Demo {
	public static boolean[] use;
	public static int n;
	public static int[][] shuzu;
	public static void main(String argv[]) {
    Scanner scan=new Scanner(System.in);
    n=scan.nextInt();
   use=new boolean[n];  
   shuzu=new int[n][n];
   for(int i=0;i<n;i++)
   {
	   shuzu[i]=new int[n];
	   for(int j=0;j<n;j++)
	   {
		   shuzu[i][j]=scan.nextInt();
	   }
   }
   scan.close();
   Arrays.fill(use, true);
  //System.out.print(Integer.MAX_VALUE);
   use[0]=false;//首先禁止起点被访问了
   System.out.print(doit(n-1,0)); 
	}
	public static int doit(int num,int nowi)//num是当前集合的长度,nowi是出发的起点
	{
		if(num==0) {
			//System.out.print(shuzu[nowi][0]);
			return  shuzu[nowi][0];
				}
		int ans=Integer.MAX_VALUE;
		for(int i=1;i<n;i++)
		{
			if(use[i]==true)
			{
				use[i]=false;
				ans=Math.min(ans,shuzu[nowi][i]+doit(num-1,i));
				use[i]=true;
			}
		}
		return ans;
	}
}


时间空间复杂度

时间复杂度 O ( n 2 2 n ) O(n^22^n) O(n22n)

空间复杂度 O ( n 2 n ) O(n2^n) O(n2n)

国科大的算法设计与分析相关1-5章复习题 第一章样例: 1.讲义习题一: 第1(执行步改为关键操作数)、第2、3、6、7题 习题一 1答:执行步4pmn+3pm+2m+1;关键操作2n*m*p 2方法一答:2n-2次 方法二答:2n-2次 3 1)证明:任给c,n>c,则10n2>cn 。不存在c使10n22c时,logn>c,从而n2logn>=cn2,同上。 6 答:logn,n2/3,20n,4n2,3n,n! 7 答:1)6+n 2) 3)任意n 2.讲义习题二:第5题。 答:c、e是割点。每点的DFN、L值:A1,1、B2,1、C3,1、D4,4、E5,1、F6,5、G7,5。最大连通分支CD、EFG、ABCE。 3.考虑下述选择排序算法: 输入:n个不等的整数的数组A[1..n] 输出:按递增次序排序的A For i:=1 to n-1 For j:=i+1 to n If A[j]<A[i] then A[i] A[j] 问:(1)最坏情况下多少次比较运算?答1+2+..+n-1=n(n-1)/2 (2)最坏情况下多少次交换运算?在什么输入时发生? n(n-1)/2,每次比较都交换,交换次数n(n-1)/2。 4.考虑下面的每对函数f(n)和g(n) ,比较他们的阶。 (1) f(n)=(n2-n)/2, g(n)=6n (2)f(n)=n+2 , g(n)=n2 (3)f(n)=n+nlogn, g(n)=n (4)f(n)=log(n!), g(n)= 答:(1)g(n)=O(f(n)) (2)f(n)=O(g(n) (3)f(n)=O(g(n) (4)f(n)=O(g(n) 5.在表中填入true或false . 答案: f(n) g(n) f(n)=O(g(n) f(n)=(g(n)) f(n)=(g(n)) 1 2n3+3n 100n2+2n+100 F T F 2 50n+logn 10n+loglogn T T T 3 50nlogn 10nloglogn F T F 4 logn Log2n T F F 5 n! 5n F T F 6.用迭代法求解下列递推方程: (1) (2) ,n=2k 答:(1)T(n)=T(n-1)+n-1=T(n-2)+n-2+n-1 =…=T(1)+1+2+…+n-1=n(n-1)/2=O(n2) (2)T(n)=2T(n/2)+n-1=2(2T(n/4)+n/2-1)+n-1 =4T(n/4)+n-2+n-1=4(2T(n/23)+n/4-1)+n-2+n-1 =23T(n/23)+n-4+n-2+n-1
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值