Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
2016/04/07 �� �������� 2016
1
�� ��������
����� �����
������URL�http://www-ikn.ist.hokudai.ac.jp/~arim/pub/algo/
�G�,A2@4=%���
n ��&��
¨,A2@4=&�����+��"*H
¨�������.C6C D(#'OD;71.CEE
¨.C6C&��&�
¨�%!$�?C0@7:&���&�����+�)*
n <-B9
¨.C6C��
¨;71.CF;71.>/F;713C5
¨ �����%�������,A2@4=%8C5�� 20162016/04/07
2
+�.@2?5:#&D
�-�-$�
l����
l;<?305
l���'%����
l968AB1%���
(�%��
l<4=>?7/ Modularityl����� Reusabilityl�)*!� Readabilityl� *!� Portabilityl ...
��"&C����#;<?305"�,
����
;<?305
2016/04/07
3
�� "2�8�
�� "3$;$;0��1�*9!
◆1. =PDOGM
◆2. CRI>QBFH?P
◆3. ��2�#/CQL?N2�
◆4. KRJ@A=2��
◆5. ��+252
,&7��13�47:0$
)&)TTT
2016/04/07
4
+(.�&0!�3��)-
��E?G1*9
�� "2��2
��,'<�6%T
((.3=PDOG
M2 $,'1�
�*9S
'4(3*0!.5+� 20162016/04/07
5
���"��
n ���"��
¨�����(time complexity) )-,/�¨�����(space complexity) 123�
n �%��&��'4(3*0
���6
���7
�6
�7
6�"��8��"���"��
'4(3*0
��
� #$�
4@6?8>';A9�� 20162016/04/07
6
��'���
GCD (Greatest Common Diviser) [� ���3�.1��]
�D���a0, a1
�Da0'a1*� ���
��
(a0,a1)=(28,12), (987654321,123456789)���
SUBSET-SUM [����]
�Dn+1�*���a0,a1,…,an-1,b�DΣj∈S aj=b'(1S⊆{0,1,…,n-1}��� #0yes��� (�$#0no
��
(a0,a1,a2,b)=(1,2,3,5), (a0,a1,a2,a3,a4,a5,b)=(1,2,4,8,16,32,60)���
�758Ea0'a1*=:<�
�758E�*��n+1B,#+��*�*=:<�*C
�D!2"2*��B�C&��758+�)(1�?
��%-/�
,>1=3;!6?4� 20162016/04/07
7
��!���
EULER-PATH [.-<?�+�&)��]
��C/<9 G = (V,E)��C.-<?�@��+B����)�A��*$��*'#�#B��"�*$�"��
��
���
V={v1,v2,v3,v4}E={e1,e2,e3,e4,e5,e6}
0?758:>/#� (��
��2-3D�% #��!�#�
�A��2-3D��!�#� = 4 + 6 = 10
fuitkrUovl$7 20162016/04/07
8
2+9Y3�'�@�Y1&X`RS2+9H�db
⇒�@�Y1&X�MP3�⇒�:nY< T(n)ULS2+9e3��:G`[2+9Z2+hjpsouX��
n � w�%xhjpsou
N\SY ey4U]WLAVY�#��_��";T�.TIbU��
n � hjpsou
�BY ZOce/)NbYX�0Wqnp Y4 H�0TCaA�#��Y�.Zqnp X�MP";H�0U-Fb
(�xGCDY�(a0,a1) � hjpsou log a0 + log a1
�=XZ0,eJb �a!�H�0QHgvmv3�YP^� �Z�>WD
�IW �e�EKUH#5*W�@Z� hjpsouAOETWD��Z� hjpsou
SUBSET-SUMY�a0,a1,…,an-1,b � hjpsou n+1EULER-PATHY�V,E � hjpsou |V|+|E|
?(Y U6Y
80
�.;CF-f�' �&@�H�
n ��?)�' �&A)��1�.GJ8=2@[aP^] �@SXW[�<A0I*
n 743��?)SXW[�LA0I��1+I0g
¨�e SXW[� T(n) = 2n2+5n+1000 n SXW[�A)/>6M`R_T]<D)[aP^\bP�!E)QbZN^)�2�<�KI*��
n ��n?�5;)9,8,@����1K0JBF,@<A>,0*
n → �$� �&dOcVce��¨�eSXW[� T(n) = O(n2)
M`R_T]=YcU�% 20162016/04/07
9
�.;CF-
( �&?D�6#"1>H8:
�"/(/�� ��
1.3 �������������
.$-%,�*/'�� 20162016/04/07
10
����0
http://www.shutterstock.com/
�XX .$-%,�������������"/(/��#!)#&/+ .$-%,�O(n log n)���
"/(/����1
VbYaZ`I^c[�/ 20162016/04/07
11
�. *"1hOe_]XWcf
•*"1T(n)M���<JnK�AG,�CU4•���L�MJ8QLIOJC4
�%h�. ��(_]XWc+�) +O
T(n) = O(f(n)) ⇔ 7U��c>0I&��n0;� AG�GL
n≧n0K�AGT(n)≦cf(n);�T!F
�. ��M8=SHQ� CU;H<UE>$H#�LR8QL;R8
(1) 2n2+5n+1000 = O(n2) ← ��'8 best!(2) 2n2+5n+1000 = O(n2+n) ← (1)RT(3(3) 2n2+5n+1000 = O(n3) ← (1)RT#�;�8
Wc\c,� �. �� = asymptotic upper bound
�� 52�T(n)Mf(n)I�B:�@86
5T(n)MgWc\c f(n) H7U6NDMg5T(n)Mg_]XWcf(n) H7U6I-P
??M��d
KWc\c+�IQ89
0)
* ����47F=F' 2,�J
5D9C;A(>F<�� 20162016/04/07
12
n !3"3, 2n, n3/2, 5n2, 100n,����4.%4%,@E8BA+��&G!,��n4�/�*�1�1�#(�,����,8B?H
n 7F=F����-)G�+01�������+���2
��I ��,:6;4����&�$#1)�*2�JT = 2n T = n3/2
T = 5n2
T = 100n
+"����14B:B)�/-�H
2@6?8=*;B9 � 20162016/04/07
13
n ��G ��1��%�&���+738-�����/�H
n �D4'<A5>=, (E��.E#-����*E#0$0E1��*1��)��/��-��7381�!F
n ��G ����110�,!/*EO(n)��2@6?8=+.10�-738-���*�/F � EO(n3)��+.2.3�EO(2n)��+.1.3� ���/��-738����+.+�C
HQJPKO@NSL�, 20162016/04/07
14
�)�$�/A�'
�'U T1(n)=O(f(n)), T2(n)=O(g(n))A@94�A� 8��
T1(n)+T2(n)=O(max{f(n),g(n)}) ← 5:>7A��G1�"6�B��-5��8��A��+�G�.<F
T1(n)T2(n)=O(f(n)g(n)) ← ��G!E*;"6@=A���0877F
(�) n2+n3=O(n3), n2Rn3=O(n5)
ISMS#%A���
&�;?CD6T
�(A �≧�(A �
(�) 3 2n2+5n+1000 = O(n2)2 O(n2)=2n2+5n+1000
R_V^W\GZ`X�0 20162016/04/07
15
�/#+'1cΩa[YUS]Tb
�*c�/#�!a[YUS]T,�b ,Ω
T(n)=Ω(f(n)) ⇔ 7Pc:� =E�3�InH�=ET(n)≧cf(n):�O&D
(�) 2n2+5n+1000 = Ω(n2)
T(n)= n2 if nJ��n3 if nJ��
T(n)=Ω(n2)
��I�*QΩI�*G=E� ?P<GM7P4($%.�FJ<BNM�8b
T(n)=Ω(f(n)) ⇔ 7Pc,n0:� =E�EIn≧n0H�=ET(n)≧cf(n):�O&D
��*c�/#�!a[YUS]T,�I��*b
�I�*I�:=8IF�I�*Q�A@K<BNI�*M�A?
�I�*FJΩ(n3)
�/#�!=asymptotic lower bound
5T(n)J[YUS]T f(n)F7P6G-L�� 52�T(n)Jf(n)G�>9MCG�;86
�()
"�
=J@IBH2EKC�" 20162016/04/07
16
�!���#NΘLGD?AKCM
��N�!�4C>F3%�(asymptotic tight bound) ��Θ
T(n)=Θ(f(n)) ⇔ (; �c0,c1>02���n0*�+0�05n≧n04�+0c0f(n)≦T(n)≦c1f(n)*�:�/
(�) 2n2+5n+1000 = Θ(n2)
T(n)= n2 if n6�n3 if n6��
T(n)≠Θ(n3)
T(n)=Θ(f(n)) ⇔ T(n)=O(f(n)), T(n)=Ω(f(n))
��4
Ω5���1(<7`⇒’58��
�� &$�T(n)6f(n)2.)-)�,'
&T(n)6GD?AKC f(n) 1(;'2 9
��
AOENGK6IPH� 20162016/04/07
17
�"604o6ω<�14*.)Q���8HBJ57(�� ��o
T(n)=o(f(n)) ⇔ ��9�c>08�0,'?n0+�04�49n≧n08�04T(n)≦cf(n)+�>�2
(�) 2n = o(n2), 2n2≠o(n2)
T(n):n+�!�8�3-82@4f(n)8�04���8�/-7?#
2;># 67?$limn→∞
T(n)f(n) = 0
���8HBJ57(�� ��ωT(n)=ω(f(n)) ⇔ ��9�c>08�0,'?n0+�04
�49n≧n08�04T(n)≧cf(n)+�>�2
(�) 2n2 = ω(n), 2n2≠ω(n2)
T(n):n+�!�8�3-82@4f(n)8�04���8�,-7?#
2;># 67?$limn→∞
T(n)f(n) = ∞
T(n)=o(f(x))
f(x)=ω(T(n))
⇔
%T(n):FMPOCP f(n) 5'?&
���
%T(n):FMPOCLD f(n) 5'?&
T(n):f(n)=>�8�/(.6
T(n):f(n)=>�8�,(.6
�
/81726%593�� 20162016/04/07
18
0949(���< ��(+-�"
��1< T(n)�n(��&,*;��� (�(0949'&.
��)��:
�<
��2< �(0949(���!.<
��3< T(n)���#�(�(�&,*;��� (�(0949'&.
�<
• log(n) = O(n)• n = O(2n)• ��(c>0' $;log n = O(nc)
10n+ 2 n + 5=10n1 + 2n0.5 + 5=O(n)
3n2 + 2 n +100 logn+ 5=O(logn)
2n2 +3n+100 =O(n2 )�<
��
-6/504"371� 20162016/04/07
19
.727%���9 ��!��� ',��%.727$),��(1/2)����T1(n)"T2(n)%-6/504!&#�*����:⇒��%.727��������
��49 T1(n))+(T2(n)%����%.727����
⇔ limn→∞ = 0 ⇔ limn→∞ = ∞T1(n)T2(n)
T2(n)T1(n)
��59 T1(n)"T2(n)&��%.727� ��⇔ T1(n)=Θ(T2(n)) ⇔ T2(n)=Θ(T1(n))
T1(n)"T2(n)&��%.727� �� limn→∞ = c for some 0<c<∞T1(n)T2(n)
��&��8
��
,5.4/3"270�� 20162016/04/07
20
-717%���8��%-717$(* �(2/2)
f(x)g(x)
��68 l’Hospital%��1. f(x),g(x):R →R�����!f(a)=g(a)=0,x=a��!g’(x)≠0!�+'
limx→a =limx→a
2. f(x),g(x):R →R�����!limx→∞f(x)=limx→∞g(x)=∞!�+'
limx→∞ =limx→∞
f’(x)g’(x)
f(x)g(x)
f’(x)g’(x)
(�) n0.01"log100n!&# )�����������9
limn→∞ =limn→∞ =limn→∞
=limn→∞ =666=limn→∞ =0
log100nn0.01
100log99n�(1/n)0.01 n-0.99
100log99n0.01 n0.01
100699log98n0.012 n0.01
100!0.01100 n0.01
�
AJCIDH3GKE�� 20152015/10/28
21��L�� M
(5) 0)6BKFK��@���-;"(a) O(nlogn+n2)+O(n1.83logn)
�<&5nlogn<n2, nlogn<n1.83logn2#>"8.!
limn→∞ = limn→∞ = limn→∞
= limn→∞ =0
;/1���(4n5�,1n1.83logn<n22#>&<
O(nlogn+n2)+O(n1.83logn)=O(n2)(b) O(nlogn+n100+n30logn)
n30logn<n1007�<&"8.���(4n5�,1n100<nlogn' =�0";/1
O(nlogn+n100+n30logn)=O(nlogn)
n1.83logn logn 1/nn2 n0.17 0.17nN0.83
10.17n0.17
(c) O(n3sin2n)O(2n/logn)sin2n≦12#>&<
O(n3sin2n)O(2n/logn)=O(n32n/logn)
��6a,b>05�,limn→∞ = 02#>&<���(4n5�,17!5 logan<nb 2#>"
logannb
�?1(.<+6��&<�����*1:OK
�%19;$
+.#,')����������
������� � ��+.#,')����!-$,"*������ �����
!-$,%*�(.&� 20162016/04/07
22
�����/
=F?E@D4CGA� 20162016/04/07
23
=F?E@D7��"
��"<&�7�#N7%�4.2>GBG��.097��7M17���,);(
����"Iworst case complexity)�#,N3);&�7�3� 7��"
����"(average case complexity)�#,N3);&�7��"7���
I�J �#,N7&�6�.��(N-1)/N3O(N)'��1/N3O(N2)3);:+5=F?E@D7��"
���$��" O(N2) ���$��" O(N)
--8 �H
��8K����"3��/;-4,�*L
!�
0=2<3:#6>4�� 20162016/04/07
24
GCD/��'&$�-�,�0=2<3:(1/2)@
(a)��%0=2<3:
Step 1 n←a1
Step 2 n�a0#a1'��"�.)
n/���!��
Step 3 n←n-1#�!Step 2*
(b) ;>1<58'��
Step 1 a←a0, b←a1
Step 2 r←a�b���� �Step 3 r=0��b�������Step 4 a←b, b←r���Step 2
��? a0, a1 (a0≧a1) ���(N = O(log a0)(a0/���"��'957�)
$ ����@
��!+,�
ALBKDJ3HME�� 20162016/04/07
25
GCD@�)764/=(<$ALBKDJ(1/2)O
(a)��5ALBKDJStep 1 n←a1
Step 2 n(a03a17��2#?9
n@�+1��Step 3 n←n-13+1Step 2:
(1) ��7�� LMI7 �8a1(≦a0)*?8��N=log(a0)7��
(2) LMI�6'$1>�(O(log2a0)CGFI!-7�7��8O(loga0)CGFI"��28O(a0log2a0)CGFI"
(3) +.(01��@N3,?9��� ���8O(N22N)"
�N a0, a1 (a0≧a1) ��8N = O(loga0)
��� ALBKDJ
��5ALBKDJ7���
�&1;<%
fviuksTpwl'5 20162016/04/07
26
GCDe1FXWUO`E_@fviuks(2/2)|
(b) twhunqX�:+
Step 1 a←a0, b←a1
Step 2 r←aebS�PN�aStep 3 r=0V`Zbe��JR*Step 4 a←b, b←rTJRStep 2[
��{ a0, a1 (a0≧a1)
0�{�(W=�"XiW�JR=ai+2< ai/2 >Q\a=vwre2�\dbHTWaXE����WVb>
JNEPR=ak+1 = 0 WVb\Sk�vwrE�bT= a2k< a0/2k (1�)>
GGS�X2._a=&!X��S^=vwrX�#YO(log a0)�>�vwr WC@R=�a.EO(log2a0)jonr=MX�X6�YO(loga0)jonr>_PR��SYO(log3a0)jonr>
JNEPR��8eNTKcZ=&!%92.7YO(N3)>
��8YO(loga0)
�;�%9fviuks
twhunqX�:+X2.7
GO`ELPT4@x
vwre�bHTW=)X_AV2.e<)JR=aXE�IFVa=& Wak+1=0TVb>a0=q1a1+a2,a1=q2a2+a3,…,ak-1=qkak+ak+1
a0-a2=q1a1≧a1>a2S?bD`a2<a0/2>
vwr�#XgwmwX��2.
0 = a2k≦ a0/2k y(1)�_az→ log2 0 ≦ log2 a0 – k log2 2y�3Xlog2eTbz
→ k+1 ≦ log2a0 ($,Kb)→ k = O(log2a0) (gwmw)
/BR]_A
-�
�4��/".$,����
n�����
¨�/".$,������
¨������
¨�1&1�����
¨ ���������
¨�2GCD�/".$,���������
n +�0)
¨�1&1��
¨*'!�13*'!�- 3*'!#1%�/".$,�(1%�� 20162016/04/07
27