情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.jwbkdjei[ 6!9& ¨q[ -[!9&o...

32
1

Upload: others

Post on 28-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

�����������

1

�����������

������������������� �����

Page 2: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

�3��:D8��n��*��H

¨A6;

n!�G �A6;G� �A6;)-. �

¨6894

n 6894*��E��,�%F

¨3?D

n =2C;

¨��*��H[��](�$/'6@2<+��%-#¨=2C80�"':D8��

¨��:D8�(&* �1B5A7>(:D8��

2

��

Page 3: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

*>0=2:#6A4��

3

6A4��

6A4��#&

n 3>(cell)%��$�(��)��"'%¨���������������� ����������

¨�����������

6A4) �!(����

Algorithms + Data Structures = Programs

Niklaus Wirth B�-<,1@8>7C ��"�%��Niklaus Wirth(1934-)&1+1%������/?9;A4��Pascal%����DGFE$5;A=?.����

Page 4: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

������n

¨ h 1 h 6 7 9i 7

¨

n

¨ 7 9 N 96 7

¨W N "

.��� ������

4

Page 5: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

��/�3AN?�#2��

��!2AN?

◆K<=?�0+2��

�AN?

◆char, int, large int, double, �#AN?

◆%�OarrayPQ�#�OstructP��AN?�#

◆I=BOlinked listPQ=?@8OstackPQ ,��OqueueP�$�AN?�#

◆�����Obinary search treePQ�����Obalanced search treePQC@;G�Ohash tableP

�2 !4�-.(5OCQPascalP

��!O)1(P

�"2 !OC++QJava, etc.P

*2&7J:I>F0AN?�#'/�30*6

&DL9HEM9'/�30*6

5

Page 6: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

�� ) ( !&=

AE C DI

C

.

• 07/�8%API9,���07/��!'��;• 07/�$&:��+&��8What9�!��+,"%)�$���*�=8How9�%��%���*;

• ���#26.43��(4-1457&�% �$� �;8�<C++:Java:Ruby, Python #"#"9

6

Page 7: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

������ ����������

n 10 �

������������

7

n 0n �n ��� � �n

��

A1 AnA2 A3�

��

Page 8: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

=6;-�(1��n List L = create () : �.=6;3�(An insert(L, p, x) : =6;L.��p.�-��x3��(1n delete(L, p) : =6;L.��p.��3�!(1n search (L, x) : =6;L-��x&02*$2/13@,'2/03�(

n addFirst(L, x) : =6;L.�"��-��x3��(1n find(L, i) : =6;L.i��.8>.� 3�(n last(L) : =6;L.��.8>.��3�(n next(L, p) : ��p.B)�.8>.��3�(n previous(L, p) : =6;L-%$*#��p.B)�.8>.��3�(

4>5=7<+:?9��

8

��

��

Page 9: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

��������

��� �����������������

9

������������

Page 10: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

N\Q[SYBU`T�+

10

[RVD�'��

[RVBE(#Me���f�C�G?ID

a��b[RVE,$[RVM�=;B9�8

[[RV a0,a1,…,an-1D� �]

1. /�(array)

2. ,$[RV(linked list)

3. ��,$[RV(doubly linked list)

a0 a1 ___ an-1

n�D,%2�C�"

an-1 nulla1a0init ___

XO^TA�D(#D�"2�M�=

an-1 nulla1a0init ___null ___ final

XO^TA�D(#D�"2�M�=

�.

�.

&�

-�

�binitBfinalXO^TMcheada�3bBtaila��bB�F;BI�8d

[!)] 6�'7BE4N\Q[SYJ�*U`T M4W]PZYB<@�1C��=K;B4H?E4>D:L<8��5

0(

Page 11: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

��$

n ��(array)�����

11

a1 a2 a3 a4

�� int a[100]; % 100����a[0],a[1],…,a[99]������

1. ��(array) n�� ����

a0 a1 """ an-1

0 1 """ n-1

n=4

�!� ����#���

Page 12: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

G<BP��G<B(linked list)/35��n ��7��)5#>H$7D9I?,+.%,NG<B7�)O

n ��10���!7��3',�&5

12

an nulla1-1head JJJ ai-1 ai JJJ

a1 a2 a3 a4n=4

*>H = �46*�2 0(-

>H*0���LC��0:KCM

typedef struct _cell {int element;struct cell *next;

} cell;

@EK0>H

�"(head)

aicellelement next

>H*L�M

�� �0D9I?

��

8H;G=F-AK?��

Page 13: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

��3)"/%��4

)"/% 1pointer2◆$,���! �&0%

◆��-(,���$,������

◆'.#+*/#���������!����� ������

13

Page 14: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

��3,$1)� �

14#/%.(-�*2)��

,$1) p

132 � x

5

C�����

²,$1)p�����x"�x = *p����

²�x"�,$1)p"p = &x �� ��!�

0&')0+/������

Page 15: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

15

C��9@CUJN:��(1/3)

"�UJN

typedef struct cell {int element;struct cell *next;

} cell;

cell *init=NULL; %�:UJN

void list_add(int x) { %����xE�%< �

cell *new=(cell *)malloc(sizeof(cell));new->element=x;new->next=init;init=new;

}

struct cell {XXX}\ �!�cellEXXX7��

typedef XXX cell\ XXXEMYLLGPcell7/5��

init;cellMYLE 0QGWL

sizeof(cell)\ cell:MYLIGKZOGN[

malloc(n)\nOGN:STUYE��

(cell *)malloc(n)\ ��/2nOGN:$EcellMYL��$7>80(

aicell

��

elementcell<:QGWLnext

#�

FVHUKR7MYL�!

��E�,C�<\--*A�:"�UJN:C��9@C��;'��6?B=0(��:�&7�D15'/4*B��/5+3.)

Page 16: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

&5)4+1�-7, �

16

C�� #$4*.!��(2/3)typedef struct cell {

int elem;struct cell *next;

} cell;

cell *init=NULL; //�!4*.

void addFirst(int x) { //���x%��"��

cell *new=(cell *)malloc(sizeof(cell));new->elem=x;new->next=init;init=new;

}

init3 6

NULL

elem��

next��

addFirst(5)%��$�new

�234!��

new5

�elem!��

init3 6

NULL

�next init0'6,%(/7new

5

init3 6

NULL

�init new0'6,%(/7

��

Page 17: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

?JAICH3ELD�&

17

C#$5;<IBF6 !(3/3) : ���IBF

���' IBFtypedef struct cell {

int elem;struct cell *prev;struct cell *next;

} cell;

cell *init=NULL; //�6IBFcell *final=NULL;void addFirst(int x) { //��"�x>�)9%�

cell *new=(cell *)malloc(sizeof(cell));new->elem=x;new->next=init;new->prev=NULL;if(init==NULL) final=new;else init->prev=new;init=new;

}

cell7Q2�6ELD>�0G@KDprev::2

���6ELD>�0G@KDfinal:�"

�)5%�0<��7Q2�6ELD74/

��5��.=1ELD,���6ELDMfinal,�0ELD)34<

R2��(5��.=1ELD7prevG@KD>�/*�)ELD>�0;+5��0<

�Ninit3finalG@KD>OheadM�)N3tailM��N38-3:�*P

Page 18: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

)2*1,0#.4-��

18��1+/"� $��5��6

INSERT(x,p,L) : 1+/L5���n6&��p&�&��%��x(��

a0 a1 333 ai 333 an-1ai-1

p

a0 a1 333 ai 333 an-1ai-1 x��/��!�� 'Θ(n)

��&�

an-1 nulla1a0init 333 ai-1 ai 333

p

an-1 nulla1a0init 333 ai-1 ai 333

x

��1+/&�

��/��!�� 'Θ(1)

an-1 nulla0

init333null 333

finalai-1 ai 333333

an-1 nulla0

init333null 333

finalai-1 ai 333333

p

x

�����1+/&�

��/��!�� 'Θ(1)

��

Page 19: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

)2*1,0$.4-��

19��1+/#��%��5�"6

DELETE(p,L) : 1+/L5���n6&��p&�&��&�&��(�"

a0 a1 333 ai 333 an-1ai-1

p

a0 a1 333 ai+1 333 an-1ai-1

� /���!�� 'Θ(n)

��&�

an-1 nullai-1a0init 333 ai ai+1 333

p��1+/&�

� /���!�� 'Θ(1)

ai-1 ai ai+1 333333

p�����1+/&�

� /���!�� 'Θ(1)

ai+1

an-1 nullai-1a0init 333 ai+1 333

333333

ai-1 ai+1 333333333333

Page 20: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

7E9D;C.@G=�

20

"�(��/��Hi��1��2178<:IFIND(i,L) : D:ALH���nI1i��1<E1��6�)LAST(L) : D:ALH���nI1��1<E1��6�)PREVIOUS(p,L) : D:ALH���nI0'&,$��p1J+�1<E1��6�)

a0 a1 FFF ai FFF an-1ai-1

"�1��

an-1 nullai-1a0init FFF ai ai+1 FFF

!�D:A1��

��!�D:A1��

ai+1aFIND(i,L) : Θ(1)LAST(L) : Θ(1)PREVIOUS(p,L) : Θ(1)

p

FIND(i,L) LAST(L)PREVIOUS(p,L)

FIND(i,L) : Θ(n), LAST(L) : Θ(n), PREVIOUS(p,L) : Θ(n)

p

!�#-%5*3i��1��4��1��0J:?>B-78<:��

PREVIOUS(p,L) LAST(L)

K

FIND(i,L)K

an-1 nulla0

initFFFnull FFF

finalai-1 ai FFFFFF

p

FIND(i,L) : Θ(n), LAST(L) : Θ(1), PREVIOUS(p,L) : Θ(1)PREVIOUS(p,L) LAST(L)FIND(i,L)

K

Page 21: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

,E2D6?$9J7��

21

��&)*��D5:'�

a1 a2 IIIa0 an-1 an-22 4 6 9 7 III1 -1 m-1 5 -1

0 1 2 3 4 5 6 m-3 m-2 m-1

free_init 0 init 3

@D8:•=-H7!% ;G0C>H0��#(��#"* (�KFORTRAN)•@ADJ����'��+��#"*�•@ADJ���+��#"*�•.<J41F/3BH'�!% �

��

Page 22: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

�������

������� ���������

22

�����������

Page 23: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

#.%-',�*/(�

23

&()$(stack)&()$��

�����������������! -&+

LIFO(last-in-fast-out)[���]TOP(S) &()$S������"��POP(S) &()$S���� �"��PUSH(x,S) &()$S���� �x"��

a0

a1

a2 PUSH(a2,S)

a0

a1

a2

a0

a1

a2POP(S)

TOP(S)

Page 24: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

�) ("'�%+#�

24

!#$����

a0 a1 *** ***ai

i

���������� ��Θ(1)

�������

a0 nullaitop ***��(!&�����

���������� ��Θ(1)

top

S

=TOP(S)

a0 a1 *** ***ai

i+1top

S ai+1

PUSH(ai+1,S) POP(S)

ai-1

TOP(S)=

a0 nullaitop ***ai-1

ai+1

PUSH(ai+1,S) POP(S)

��

��

Page 25: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

�, +#)�&0$ �

25

"$%����1������2(.�*)1��n!���2int factorial(int n) {if(n==1) return 1;else return n*factorial(n-1);

}

���0'!0��/"

1: if n≠1 then goto 32: return 13: r=factorial(n-1)4: return n*r

����n 3

���0'1:2:3:4:

3���'-"

n 2

1:2:3:4:

n=3, �:4"$%�

n

1:2:3:4:

n=3, �:4n=2, �:4

n=3, �:4"$%�

3

3

1:2:3:4: 4

1

2

n 2

1:2:3:4: 4

n

factorial(3) factorial(2)

factorial(1)3

6

��

Page 26: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

"��=08<>#'?

n ��&��' ����'���*$ ,+926

n FIFO(fast-in-fast-out)#)��

.:1937#5<4��

26

[����]n TOP(Q) 08<Q&��&��-�!n ENQUEUE(x,Q) ��x-08<Q& �%�,+n DEQUEUE(Q) ��&��-08<Q�*��

�/;08<���508<�#�(

C D E FA B

G H I

��

Page 27: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

'2)1+/�-3,��

27

���((03, queue)���((034�"

��!��" ����"���#��%$1*.

FIFO(fast-in-fast-out)

[����]TOP(Q) (03Q!��!��&��ENQUEUE(x,Q) ��x&(03Q! � �%$DEQUEUE(Q) ��!��&(03Q�#��

a0 a1 a2ENQUEUE(a2,Q)

a0 a1 a2

TOP(Q)

a0 a1 a2

DEQUEUE(Q)

��

Page 28: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

�) ("&�$+#�

28

�'+���

*** ***a0

j

���������� ��Θ(1)

�������

ai nulla0front ***

��(!%�����

front

Q

TOP(Q)

ENQUEUE(ai+1,Q)

a1

TOP(Q)=

aia0front ***a1 ai+1

ENQUEUE(ai+1,S)

ai ***

=

(j+i)%nrear0 n-1

DEQUEUE(Q)

a1

*** ***a0

front

Q ai ***

(j+i+1)%nrear0 n-1

a1 ai+1

*** ***

(j+1)%nfront

ai ***

(j+i+1)%nrear0 n-1

a1 ai+1

j

rear

null rear

aifront ***a1 ai+1 null rear

DEQUEUE(Q)���������� ��Θ(1)

��

��

Page 29: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

A4 A5 A1 A2 A3

0 1 2 3 4 5

frontrear

&�J��e]`V UEk◆ [dgN'C n @)�CTF�◆ �,K��@HL@GIj$MLGFe]`

◆ "�N��Vjn N����J��.

���������

front ?R i ��N"� /-Element[ (front + i) mod n ]

0213145

ex. Elem[(head + 5) mod n] (head = 1 and n = 6)= Elem[7 mod 6] = E[1]

29

\cf`lBN��O+�M8<P;9XZ_YXJ:S7 *6�)'a^bWh��'C@�PGI;S[dgiM(DIO6%�e]`JLAI6BN&�MQS[dgN !@�A�UTI;SNJ6#=I>AKQ;7

Page 30: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

�������������� �������������

T S R a P L IN L DEAT S

. :

C

&���5*��!�$03����:��6;���2D���������F(:�5*�� &��+B�'�7/���F.>� &�8C�4=;�?��� ��F

9A�4=�-E!%�#"�)�D-�<@�,D�4=�1AF

30

Page 31: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

�3��/7-��n��!��;

¨4+0

n��:��4+0:���4+0 #$��

¨+-.)

n +-.)!��8� �"��9

¨(37

n 1'60

¨1'6-%���/7-��

¨��/7-��!��

&5*4,2�/7-��31

Page 32: 情報知識ネットワーク研究室arim/pub/algo/algo3.pdfgnf.JWbkdjei[ 6!9& ¨Q[ -[!9&o SUO`W?Or>=Z\*\ Mrp n@) 8qCZ_`bkdjeiWgnf.Jq2% q2916 n 5 qbkdjeiWgnf.Js BCAF3tq, 3q 2376

gnf.JWbkdjei[�6!9&¨ Q[�-[!9&o���SUO`W?Or>=Z\*\�Mrp

n @)�8qCZ_`bkdjeiWgnf.Jq2%�q2916n �5��qbkdjeiWgnf.Js B CAF3tq,��3q2376r

¨Aho, Hopcroft, Ullmann The Design and Analysis of Computer Algorithms, Addison

Wesley, 1974.o'�[gnf.J[!9&[�Tp

¨Knuthn The Art of Computer Programming, Addison-Wesley

1�o �*:0pq2�o1"�:0pq3�o#�W�;p, 1975n �*K [79Hr/+FVCIr�KGaR�\�YOu

¨Cormen, Leiserson, Rivest, and Steinn Introduction to Algorithms, 3rd Edition, MIT Press, 2009.n 4�q']�EPN`!9&r�-^hlcmYXV[���[�6ro$*FD(q3�<p

�L

bkdjeiWgnf.J

32