Tải bản đầy đủ (.ppt) (18 trang)

tim kiem

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.46 MB, 18 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

1


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

2


<i>Tớ là một chú cá . Hãy tìm tớ trong </i>



<i>Tớ là một chú cá . Hãy tìm tớ trong </i>



<i>đám bạn này nhé!!</i>



<i>đám bạn này nhé!!</i>



1

2

3

4

5



Không phải
rồi!


<b>Ồ! Không phải nữa rồi!</b>


<b>Ồ! Lại sai nữa </b>
<b>rồi!</b>


<b>Hi! Hi! Chưa đúng đâu nghen!</b>


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

3

<i><b>XÁC ĐỊNH BÀI TOÁN</b></i>



<i><b>XÁC ĐỊNH BÀI TOÁN</b></i>



<b>OUPUT</b>



<b>INPUT</b> <b>Dãy A gồm N số nguyên khác nhau a1,a2,…,aN và số </b>


<b>nguyên k</b>


<b>Chỉ số i mà a<sub>i</sub>=k hoặc thơng báo khơng có số hạng nào </b>
<b>của dãy A có giá trị bằng k</b>


<i><b>TÌM KIẾM TUẦN TỰ</b></i>



<i><b>TÌM KIẾM TUẦN TỰ</b></i>



<i><b>(Sequential Search)</b></i>



</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

4


<i><b>TÌM KIẾM TUẦN TỰ</b></i>



<i><b>TÌM KIẾM TUẦN TỰ</b></i>



<i><b>(Sequential Search)</b></i>



<i><b>(Sequential Search)</b></i>



<b>Ý tưởng:</b>



Lần lượt từ số hạng thứ nhất, ta so


sánh giá trị số hạng đó với

khóa

cho


đến khi gặp một số hạng bằng khóa thì


số hạng đó là số hạng cần tìm.




</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

5

<i><b>TÌM KIẾM TUẦN TỰ</b></i>



<i><b>TÌM KIẾM TUẦN TỰ</b></i>



Ví dụ:



<i>Dãy A gồm các số</i>



<b>1</b>

<b>4</b>

<b>2</b>

<b>9</b>

<b>8</b>

<b>11</b>



<b>5</b>

<b>7</b>



<b> a</b>

<b><sub>1</sub></b>

<b> a</b>

<b><sub>2</sub></b>

<b> a</b>

<b><sub>3</sub></b>

<b> a</b>

<b><sub>4</sub></b>

<b> a</b>

<b><sub>5</sub></b>

<b> a</b>

<b><sub>6</sub></b>

<b> a</b>

<b><sub>7</sub></b>

<b> a</b>

<b><sub>8</sub></b>


N=8



<b>K=9 </b>



<b>9</b>



<b>||</b>


<b>k</b>



<b>≠</b>

<b>≠</b>

<b>≠</b>

<b>≠</b>

<b>≠</b>

<b>||</b>



<b>Tìm thấy</b>



<b>, có a</b>

<b><sub>6</sub></b>

<b>=k, vậy chỉ số cần tìm là </b>

<b>i=6</b>




<b>K=6 , khơng có giá trị nào </b>



<b>6</b>



<b>||</b>


<b>k</b>



<b>≠</b>

<b>≠</b>

<b>≠</b>



</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

6


<i>Ví dụ thuật tốn tìm kiếm tuần tự</i>



<i>Ví dụ thuật tốn tìm kiếm tuần tự</i>



9


a

<sub>5</sub>


4


a

<sub>6</sub>

2



a

<sub>3</sub>


8


a

<sub>7</sub>

7



a

<sub>1</sub>



3


a

<sub>2</sub>


6


a

<sub>4</sub>

4



k


i



123456

7



n



SAI

ĐÚNG



4



k

<sub>VẬY </sub>



</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

7


<i><b>Thuật toán tìm kiếm tuần tự</b></i>



<i><b>Thuật tốn tìm kiếm tuần tự</b></i>



<b>SƠ ĐỒ KHỐI</b>

<b>B1</b>

<b>. Nhập N, a</b>

<b>1</b>

<b>,a</b>

<b>2</b>

<b>,…a</b>

<b>N</b>

<b>, </b>



<b>khóa k;</b>




<b>B2</b>

<b>. i</b>

<b>1;</b>



<b>B3</b>

<b>. Nếu a</b>

<b>i</b>

<b>=k thì thông </b>



<b>báo chỉ số i rồi kết </b>


<b>thúc;</b>



<b>B4</b>

<b>. i</b>

<b>i+1;</b>



<b>B5</b>

<b>.Nếu i>N thì thơng báo </b>


<b>dãy A khơng có số </b>


<b>hạng nào có giá trị </b>


<b>bằng k, rồi kết thúc;</b>



<b>B6</b>

<b>. Quay lại bước 3.</b>



<b>LIỆT KÊ</b>


<b>Nhập N, a<sub>1</sub>,a<sub>2</sub>….,a<sub>N</sub>,k</b>


<b>i</b><b>1</b>


<b>a<sub>i</sub>=k</b> <b>Đưa ra i rồi </b>


<b>kết thúc</b>
<b>i</b><b>i+1</b>


<b>i>N?</b>



<b>Thơng báo dãy A khơng có số </b>
<b>hạng nào có giá trị bằng k rồi kết thúc</b>


<b>Đúng</b>
<b>Sai</b>


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

8


<b>Nhập N, a<sub>1</sub>,…,a<sub>N</sub>,k</b>


<b>a</b>

<b><sub>i </sub></b>

<b>= k</b>



<b>i > N</b>



<b>Đưa ra i rồi kềt thúc</b>


<b>SAI</b>


<b>ĐÚNG</b>


<b>i </b><b> i + 1</b>


<b>i </b><b> 1</b>


<b>5</b> <b>7</b> <b>1</b> <b>2</b> <b>9</b> <b>8</b>


<b>i = 2</b> <b>i = 3</b> <b>i = 4</b>
<b>i = 1</b>


<b>SAI</b>



<b>Với i = 4 </b>
<b>thì a<sub>4</sub><sub> = 2</sub></b>


<b>THUẬT TỐN TÌM KIẾM TUẦN TỰ</b>
<b>(Sequentinal Search)</b>


<b>N = 6; k = 2</b>


<b>a<sub>1</sub> = 5</b>


<b>i = 2 < N</b>


<b>a<sub>2</sub> = 7</b>


<b>i = 3 < N</b>


<b>a<sub>3</sub> = 1</b>


<b>i = 4 < N</b>


<b>a<sub>4 </sub>= 2</b>


<b>a<sub>1</sub></b> <b>a<sub>2</sub></b> <b>a<sub>3</sub></b> <b>a<sub>4</sub></b> <b>a<sub>5</sub></b> <b>a<sub>6</sub></b>


<b>Ví dụ</b>


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

9


<i>Em có suy nhận xét gì sau khi xem </i>




<i>Em có suy nhận xét gì sau khi xem </i>



<i>xong?</i>



<i>xong?</i>



Người đọc sách muốn tìm trang 30 của quyển sách.



Người ấy bắt đầu mở chính giữa quyển sách



Số trang vừa mở được là trang 44.(chưa tìm đúng số



trang cần tìm)



Như vậy người ấy chỉ tìm trong phạm vi từ số trang



từ đầu cho đến trang 44 (khơng cần tìm phần sau


trang 44 )



Tiếp tục phân đôi số trang từ trang đầu cho đến trang



</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

10


<i><b>Thuật tốn tìm kiếm nhị phân</b></i>



<i><b>Thuật tốn tìm kiếm nhị phân</b></i>



<i><b>(dãy A tăng)</b></i>




<i><b>(dãy A tăng)</b></i>



<b>OUPUT</b>


<b>INPUT</b> <b>Dãy A tăng gồm N số nguyên khác nhau a1,a2,…,aN và </b>


<b>số nguyên k</b>


<b>Chỉ số i mà a<sub>i</sub>=k hoặc thơng báo khơng có số hạng nào </b>
<b>của dãy A có giá trị bằng k</b>


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

11

<i><b>Ý tưởng</b></i>



<i><b>Ý tưởng</b></i>



<b>a</b>

<b><sub>Giữa</sub></b>

<b>=k</b>

<b><sub>a</sub></b>

<b><sub>Giữa</sub></b>

<b><sub><k</sub></b>



<b>Chọn a</b>

<b><sub>Giữa</sub></b>

<b> ở giữa dãy để so </b>


<b>sánh với k, trong đó Giữa=</b>



<b>Giữa là chỉ số cần</b>


<b>tìm. Kết thúc</b>



<b>Tìm kiến trên dãy</b>


<b>a</b>

<b><sub>Giữa+1</sub></b>

<b>,,,a</b>

<b><sub>N</sub></b>












2


1



<i>N</i>



<b>a</b>

<b><sub>Giữa</sub></b>

<b>>k</b>



<b>Việc tìm kiếm</b>


<b>chỉ xét trên dãy</b>



<b>a</b>

<b><sub>1</sub></b>

<b>,…,a</b>

<b><sub>Giữa-1</sub></b>


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

12

<b>150</b>


<b>84</b>


<b>6</b>


<b>75</b>


<b>9</b>


<b>8</b>


<b>7</b>


<b>5</b>


<b>4</b>


<b>3</b>


<b>2</b>



<b>1</b>


<b>i</b>


<b>38</b>


<b>15</b>


<b>7</b>


<b>2</b>


<b>A</b>



<i>Biểu diễn thuật toán :</i>


<i>Biểu diễn thuật toán :</i>



<b>k = 150</b>



<i><b>Lượt thứ nhất</b></i>

<i><b>:</b></i>

<i><b>:</b></i>

<i><b> a</b></i>

<i><b> a</b></i>

<i><b><sub>Giữa</sub></b><b><sub>Giữa</sub></b></i>

<i><b> là a</b></i>

<i><b> là a</b></i>

<i><b><sub>5</sub></b><b><sub>5</sub></b></i>

<i><b> = 75; 75 < 150</b></i>

<i><b> = 75; 75 < 150</b></i>



<i><b></b></i>



<i><b></b></i>

<i><b> vùng tìm kiếm thu hẹp trong phạm vi từ a</b></i>

<i><b> vùng tìm kiếm thu hẹp trong phạm vi từ a</b></i>

<i><b><sub>6</sub></b><b><sub>6</sub></b></i>

<i><b> a</b></i>

<i><b> a</b></i>

<i><b><sub>9</sub></b><b><sub>9</sub></b></i>


<b>Cuoi = 9</b>


<b>Dau =1Dau =6</b> <b><sub>Cuoi = 9</sub></b>


<b>151</b>


<b>90</b>



<i><b>Lượt thứ hai:</b></i>

<b>a</b>

<b>Giua</b>

<b> là a</b>

<b>7</b>

<b> = 90 < 150</b>




<i><b>vùng tìm kiếm thu hẹp trong phạm vi từ a</b></i>

<i><b>vùng tìm kiếm thu hẹp trong phạm vi từ a</b></i>

<i><b><sub>8</sub></b><b><sub>8</sub></b></i>

<i><b> a</b></i>

<i><b> a</b></i>

<i><b><sub>9</sub></b><b><sub>9</sub></b></i>


<b>Dau = 8</b>


<i><b>Lượt thứ ba</b></i>

<i><b>:</b></i>

<i><b>:</b></i>

<b>a</b>

<b>Giua </b>

<b> là a</b>

<b>8</b>

<b>= 150 = k</b>





</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

13

<b>50</b>


<b>39</b>

<b>75</b>


<b>11 30</b>


<b>6</b>


<b>9</b>


<b>10</b>


<b>9</b>


<b>8</b>


<b>7</b>


<b>5</b>


<b>4</b>


<b>3</b>


<b>2</b>


<b>1</b>


<b>i</b>


<b>8</b>


<b>6</b>


<b>5</b>


<b>1</b>


<b>A</b>



<b>k = 14</b>




<i><b>Lượt thứ nhất</b></i>

<i><b>:</b></i>

<i><b>:</b></i>

<i><b> a</b></i>

<i><b> a</b></i>

<i><b><sub>giữa</sub></b><b><sub>giữa</sub></b></i>

<i><b> là a</b></i>

<i><b> là a</b></i>

<i><b><sub>5</sub></b><b><sub>5</sub></b></i>

<i><b> = 9; 9 < 14 </b></i>

<i><b> = 9; 9 < 14 </b></i>





<i><b> vùng tìm kiếm thu hẹp trong phạm vi từ a</b></i>

<i><b> vùng tìm kiếm thu hẹp trong phạm vi từ a</b></i>

<i><b><sub>6</sub></b><b><sub>6</sub></b></i>

<i><b> a</b></i>

<i><b> a</b></i>

<i><b><sub>10</sub></b><b><sub>10</sub></b></i>

<i><b>Lượt thứ hai:</b></i>

<i><b> a</b></i>

<i><b> a</b></i>

<i><b><sub>giữa</sub></b><b><sub>giữa</sub></b></i>

<i><b> là a</b></i>

<i><b> là a</b></i>

<i><b><sub>8</sub></b><b><sub>8</sub></b></i>

<i><b> = 39; 39 > 14</b></i>

<i><b> = 39; 39 > 14</b></i>





<i><b> vùng tìm kiếm thu hẹp trong phạm vi từ a</b></i>

<i><b> vùng tìm kiếm thu hẹp trong phạm vi từ a</b></i>

<i><b><sub>6</sub></b><b><sub>6</sub></b></i>

<i><b> a</b></i>

<i><b> a</b></i>

<i><b><sub>7</sub></b><b><sub>7</sub></b></i>

<i><b>;</b></i>

<i><b>;</b></i>



<i><b>Lượt thứ ba:</b></i>

<i><b> a</b></i>

<i><b> a</b></i>

<i><b><sub>giữa</sub></b><b><sub>giữa</sub></b></i>

<i><b> là a</b></i>

<i><b> là a</b></i>

<i><b><sub>6 </sub></b><b><sub>6 </sub></b></i>

<i><b>= 11; 11 < 14 </b></i>

<i><b>= 11; 11 < 14 </b></i>





<i><b> vùng tìm kiếm thu hẹp chỉ cịn a</b></i>

<i><b> vùng tìm kiếm thu hẹp chỉ còn a</b></i>

<i><b><sub>7</sub></b><b><sub>7</sub></b></i>

<i><b>;</b></i>

<i><b>;</b></i>



<i><b>Lượt thứ tư:</b></i>

<i><b> a</b></i>

<i><b> a</b></i>

<i><b><sub>giữa</sub></b><b><sub>giữa</sub></b></i>

<i><b> là a </b></i>

<i><b> là a </b></i>

<i><b><sub>7 </sub></b><b><sub>7 </sub></b></i>

<i><b>= 30 > 14 </b></i>

<i><b>= 30 > 14 </b></i>





<i><b> Cuối=Giửa - 1 = 6 > đầu = 7 </b></i>

<i><b> Cuối=Giửa - 1 = 6 > đầu = 7 </b></i>



<i><b> </b></i>



<i><b> </b></i>

<i><b> Thơng báo khơng tìm thấy số hạng có giá trị bằng 14.</b></i>

<i><b> Thơng báo khơng tìm thấy số hạng có giá trị bằng 14.</b></i>



<b>Dau = 1</b> <b><sub>Cuoi = 10</sub></b>



</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

14

<i><b>Thuật toán liệt kê</b></i>



<i><b>Thuật toán liệt kê</b></i>








 
2
<i>Cuoi</i>
<i>Dau</i>


<b>B1</b>

<b>. Nhập N, a</b>

<b><sub>1</sub></b>

<b>,a</b>

<b><sub>2</sub></b>

<b>,…a</b>

<b><sub>N</sub></b>

<b>, khóa </b>


<b>k;</b>



<b>B2</b>

<b>. Dau</b>

<b>1, Cuoi</b>

<b>N;</b>



<b>B3</b>

<b>. Giữa </b>



<b>B4</b>

<b>. Nếu a</b>

<b>Giữa</b>

<b>=k thì thơng </b>



<b>báo chỉ số Giữa rồi kết </b>


<b>thúc;</b>



<b>B5</b>

<b>.Nếu a</b>

<b>Giữa</b>

<b>>k thì đặt </b>



<b>Cuoi=Giua-1, rồi </b>



<b>chuyển đến bước 7</b>



<b>B6</b>

<b>. Dau</b>

<b>Giua+1;</b>



<b>B7</b>

<b>. Nếu Dau>Cuoi thì </b>


<b>thơng báo dãy A </b>



<b>khơng có số hạng có </b>


<b>gíá trị bằng k rồi kết </b>


<b>thúc</b>



<b>B8</b>

<b>. Quay lại B3</b>



<b>LIỆT KÊ</b>


<b>Chọn a</b>

<b><sub>Giữa</sub></b>

<b> ở giữa dãy để so </b>


<b>sánh với k, trong đó Giữa=</b>









2


1


<i>N</i>



<b>a</b>

<b><sub>Giữa</sub></b>

<b>=k</b>




<b>Giữa là chỉ số cần</b>


<b>tìm. Kết thúc</b>



<b>a</b>

<b><sub>Giữa</sub></b>

<b>>k</b>



<b>Việc tìm kiếm</b>


<b>chỉ xét trên dãy</b>



<b>a</b>

<b><sub>1</sub></b>

<b>,a</b>

<b><sub>2</sub></b>

<b>,…,a</b>

<b><sub>Giữa-1</sub></b>


<b>a</b>

<b><sub>Giữa</sub></b>

<b><k</b>



<b>Tìm kiến trên dãy</b>


<b>a</b>

<b><sub>Giữa+1</sub></b>

<b>,a</b>

<b><sub>Giữa+2</sub></b>

<b>,</b>



<b>…,a</b>

<b><sub>N</sub></b>


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

15
<b>SƠ ĐỒ KHỐI</b>


<b>Nhập N và a1,a2,..,aN;k</b>
<b>Dau</b><b>1;Cuoi</b><b>1</b>


<b>Giua</b><b>[(Dau+Cuoi)]/2</b>


<b>aGiua=k?</b>


<b>Dua ra Giua roi</b>
<b> ket thuc</b>



<b>aGiua>k</b> <b>Cuoi</b><b>Giua-1</b>


<b>Dau</b><b>Giua+1</b> <b>Dau>Cuoi?</b>


<b>Thông báo dãy A không có sơ</b>
<b>hạng nào có giá trị bằng k</b>


<b>rồi kết thúc</b>


<b>Đúng</b>


<b>Đúng</b>
<b>Đúng</b>


<b>Sai</b>


<b>Sai</b> <b>Sai</b>


<b>B1. Nhập N, a1,a2,…aN, khóa k;</b>


<b>B2. Dau</b><b>1, Cuoi</b><b>N;</b>


<b>B3. Giữa </b><b>[(Dau+Cuoi)]/2 </b>


<b>B4. Nếu aGiữa=k </b>
<b>thì thơng báo chỉ </b>
<b>số Giữa rồi kết </b>
<b>thúc;</b>


<b>B5.Nếu aGiữa>k thì đặt Cuoi=Giua-1, rồi chuyển đến bước 7</b>



<b>B6. Dau</b><b>Giua+1;</b>


<b>B7. Nếu Dau>Cuoi thì </b>
<b>thơng báo dãy A khơng </b>
<b>có số hạng có gíá trị </b>
<b>bằng k rồi kết thúc</b>


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

16


<b>Nhập N và a<sub>1</sub>,a<sub>2</sub>,..,a<sub>N</sub>;k</b>


<b>Dau</b><b>1;Cuoi</b><b>N</b>


<b>Giua</b><b>[(Dau+Cuoi)]/2</b>


<b>a<sub>Giua</sub>=k?</b>


<b>Dua ra Giua roi</b>
<b> ket thuc</b>


<b>a<sub>Giua</sub>>k</b> <b>Cuoi</b><b>Giua-1</b>


<b>Dau</b><b>Giua+1</b> <b>Dau>Cuoi?</b>


<b>Thơng báo dãy A khơng có sơ</b>
<b>hạng nào có giá trị bằng k</b>


<b>rồi kết thúc</b>



<b>Đúng</b>


<b>Đúng</b>
<b>Đúng</b>


<b>Sai</b>


<b>Sai</b> <b>Sai</b>


<b>SƠ ĐỒ KHỐI</b>


<b>K=21, N=9</b> <b>i</b> <b>1</b> <b>2</b> <b>3</b> <b>4</b> <b>5</b> <b>6</b> <b>7</b> <b>8</b> <b>9</b>


<b>A</b> <b>2</b> <b>4</b> <b>5</b> <b>6</b> <b>9</b> <b>21</b> <b>22</b> <b>30</b> <b>31</b>


<b>Dau</b>
<b>Cuoi</b>
<b>Giua</b>
<b>a<sub>Giua</sub></b>
<b>Lan </b>
<b>Duyet</b>
<b>1</b>
<b>9</b>
<b>5</b>
<b>9</b>
<b>6</b>
<b>7</b>
<b>9</b>
<b>22</b>
<b>6</b>


<b>6</b>
<b>6</b>
<b>21</b>


<b>Chỉ số cần tìm i=Giua=6</b>


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17></div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

18


</div>

<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×