slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
資訊科學的邏輯思考 -- 演算法 PowerPoint Presentation
Download Presentation
資訊科學的邏輯思考 -- 演算法

Loading in 2 Seconds...

play fullscreen
1 / 33

資訊科學的邏輯思考 -- 演算法 - PowerPoint PPT Presentation


  • 121 Views
  • Uploaded on

資訊科學的邏輯思考 -- 演算法. 楊昌彪 教授兼系主任 中山大學資訊工程學系 http://www.cse.nsysu.edu.tw. 2000 年全國大專電腦軟體設計競賽 (60 隊 ). 排名 隊伍編號 學校 答對題數 時間 1 A011 台灣大學 4 517 2 A027 清華大學 4 578 3 A030 交通大學 4 742 4 A034 交通大學 4 748 5 A028 清華大學 4 791

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '資訊科學的邏輯思考 -- 演算法' - gomer


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1
資訊科學的邏輯思考--演算法

楊昌彪

教授兼系主任

中山大學資訊工程學系

http://www.cse.nsysu.edu.tw

2000 60
2000年全國大專電腦軟體設計競賽(60隊)

排名 隊伍編號 學校 答對題數 時間

1 A011 台灣大學 4 517

2 A027 清華大學 4 578

3 A030 交通大學 4 742

4 A034 交通大學 4 748

5 A028 清華大學 4 791

6 A010 台灣大學 4 1194

7 A013 台灣大學 3 367

8 A014 台灣大學 3 437

9 A025 清華大學 3 561

10 A039 逢甲大學 3 563

11 A047 中正大學 3 565

12 A024 清華大學 3 568

13 A054 中山大學 3 766

14 A009 台灣大學 3 806

15 A007 台灣師範大學 2 230

16 A031 交通大學 2 266

17 A001 長庚大學 2 273

18 A035 交通大學 2 317

19 A012 台灣大學 2 325

20 A015 海洋大學 2 361

排名 隊伍編號 學校 答對題數 時間

21 A023 台灣科技大學 2 462

22 A006 台灣師範大學 1 56

23 A053 中山大學 1 62

24 A056 中山大學 1 115

25 A033 交通大學 1 126

26 A032 交通大學 1 146

27 A048 崑山科技大學 1 194

27 A055 中山大學 1 194

28 A026 清華大學 1 195

29 A008 台灣師範大學 1 206

30 A036 暨南大學 1 220

31 A029 清華大學 1 252

32 A037 暨南大學 1 269

33 A017 台北科技大學 1 304

34 A052 和春技術學院 1 308

35 A019 台灣師範大學 1 348

36 其餘隊伍 0 0

2000 acm 48
2000 ACM亞洲區台北賽區大學程式設計競賽(48隊)

Rank Team Name School Name Problems Solved Penalty

1 Doodoong Seoul National University 5 735

2 Gold Medal National Taiwan University 4 714

3 Apple Car Movie National Taiwan University 3 291

3 God of Power National Taiwan University 3 439

3 CUHK Mars The Chinese Univ. of Hong Kong 3 817

4 D.N.A. National Taiwan University 2 263

4 super SLP National Taiwan University 2 298

4 eagle National Tsing-Hua University 2 302

5 Roasted Wing National Chiao-Tung University 2 303

5 NCTU JPN LAB National Chiao-Tung University 2 421

5 CSIE Dragon National Chiao-Tung University 2 460

6 Seal National Sun Yat-sen University 2 477

6 CUHK Mercury The Chinese Univ. of Hong Kong 2 597

7 Ocean Star National Taiwan Ocean Univ. 2 600

8 CSIE Snake National Chiao-Tung University 1 48

8 Funky Family IX National Taiwan University 1 136

8 Ants National Tsing-Hua University 1 142

8 The Seven Wonders National Taiwan University 1 153

8 ICE World National Taiwan Normal Univ. 1 156

9 ICE Snow National Taiwan Normal Univ. 1 186

9 clover National Taiwan Normal Univ. 1 194

9 ICE Storm National Taiwan Normal Univ. 1 256

9 CSIE Tiger National Chiao-Tung University 1 278

9 Eustis National Tsing-Hua University 1 289

9 Braves National Tsing-Hua University 1 297

9 ilantech National I-Lan Institute of Tech. 1 316

10 ICE 007 National Taiwan Normal Univ. 1 359

1998 acm 54
1998 ACM大學程式設計競賽世界總決賽(54隊)

Place University Solved Minutes

1 Charles U - Prague 6 919

2 St. Petersburg Univ. 6 1021

3 U Waterloo 6 1026

4 U Umea - Sweden 6 1073

5 MIT 6 1145

6 Melbourne U 6 1153

7 Tsing Hua U - Beijing 5 743

8 U Alberta 5 758

9 Warsaw U 5 780

10 Politehnica U Bucharest 5 813

11 UC Berkeley 5

11 Nanyang TU - Singapore 5

11 St. Petersburg IFMO 5

11 Duke University 5

11 Virginia Tech 5

11 Shanghai Jiaotong U. 5

17 McGill Poutines 4

17 National Taiwan U 4

17 Sofia University 4

17 Moscow State U 4

17 U Texas - Austin 4

17 Caltech 4

17 Ural State TU 4

Place University Solved

24 Case Western 3

24 BUET, Bangladesh 3

24 Stanford U 3

24 PUC Rio de Janeiro 3

24 Shanghai Univ. 3

29 Comenius U 2

29 University of Ulm 2

29 U Auckland 2

29 Harding University 2

29 Florida Tech 2

29 U Missouri-Rolla 2

29 U. Minnesota - Morris 2

29 Binus U.-Indonesia 2

29 U Central Florida 2

29 Darmstadt UT 2

29 NTNU - Taiwan 2

29 ITESM 2

2002 acm 64
2002 ACM大學程式設計競賽世界總決賽(64隊)
  • Place University
  • 1 Shanghai JiaoTong University
  • 2 Massachusetts Institute of Technology
  • 3 University of Waterloo
  • 4 Tsinghua University
  • 5 Stanford University
  • 6 Saratov State University
  • 7 Fudan University
  • 8 Duke University
  • 9 Moscow State University
  • 10 Universidad de Buenos Aires
  • 11 Charles University Prague
  • 11 Royal Institute of Technology
  • 11 Seoul National University
  • St Petersburg Institute of Fine
  • Mechanics and Optics
  • 11 University of New South Wales
  • 11 University of Wisconsin - Madison
  • 11 Warsaw University
  • 18 Albert Einstein University Ulm
  • 18 Belarusian State University
  • 18 Novosibirsk State University
  • Place University
  • 18 Petrozavodsk State University
  • 18 POLITEHNICA University of Bucharest
  • 18 Sharif University of Technology
  • 18 The University of Tokyo
  • 18 University of Oldenburg
  • 18 University of Toronto
  • 27 California Institute of Technology
  • 27 Cornell University
  • 27 Orel State Technical University
  • 27 Queen's University
  • 27 Sofia University
  • 27 The Chinese University of Hong Kong
  • 27 The University of Chicago
  • 27 University of Calgary
  • 27 University of California, San Diego
  • 27 University of Central Florida
  • 27 University of Otago
  • 27 University of Texas at Austin
  • University of the Witwatersrand,
  • Johannesburg
  • 27 Virginia Tech
slide6
邏輯思考
  • 邏輯思考乃解決所有事務之基礎(不論是否使用電腦)
  • 從小至大,每天均在累積邏輯思考的實力,但求學期間增進較多
  • 數學課程是邏輯思考的基礎
slide7
資訊科學(資訊工程)與數學
  • 數學在計算上有其實用性
  • 數學在深入的研究領域上可能較抽象
  • 離散數學為資訊科學的數學基礎
  • 資訊科學是數學的一個應用領域
  • 資訊科學需設計實際可行的軟硬體
slide8
何謂演算法
  • Algorithm
  • 解決問題的方法。將抽象的解法變成實際具體可行的方法或程式。
  • 利用電腦解決問題的步驟

Step 1: 明確定義問題(將其模式化)

Step 2: 設計演算法,並估計所需時間

Step 3: 撰寫程式,並加以測試

slide9
解決問題範例
  • 問題:計算大學聯考英文之頂標
  • 明確定義:計算所有考生中前25%英文成績之平均
  • 演算法:

Step 1: 將所有考生英文成績排序(由高至低)

Step 2: 將排名在前面1/4的成績資料相加後,

再除以1/4的人數

  • 撰寫程式: …...
slide10
各種排序演算法所需時間比較

CPU: K6-2 350 時間單位:秒

slide11
何時學習演算法
  • 課程順序
    • 程式設計
    • 資料結構
    • 離散數學
    • 演算法
  • 事實上,開始學習程式設計,即已開始學習演算法
slide12
演算法範例

【問題】將50元硬幣換成等值的1元、5元、10元

硬幣的方法共有多少種?

【方法-1】

  採用窮舉法,每種硬幣可能的個數如下:

i (10元):0,1,2,3,4,5

j (5 元):0,1,2,…,10

k (1 元):0,1,2,…,50

  假設 i, j, k 分別代表10元、5元、1元的個數,

  則我們可以嘗試各種組合,並利用下面的判斷式:

i*10 + j*5 + k = 50

<執行迴圈次數>6 * 11 * 51 = 3366

slide13

main()

  • {
  • int loop = 0, number = 0;
  • int i, j, k;
  • for (i = 0; i <= 5; i++)
  • for (j = 0; j <= 10; j++)
  • for (k = 0; k <= 50; k++)
  • {
  • loop++;
  • if (i*10 + j*5+ k == 50)
  • number++;
  • }
  • printf("共%d種,執行迴圈%d次\n",number,loop);
  • }
  • 【執行結果】
  • 共36種,執行迴圈3366次
slide14

【方法-2】

  若 k 不為 5 之倍數,根本不可能轉換,所以只需

  考慮 k 為 5 之倍數的情況。

i (10元):0,1,2,3,4,5

j (5 元):0,1,2,…,10

k (1 元):0,5,10,…,50

<執行迴圈次數>6 * 11 * 11 = 726

slide15

main()

  • {
  • int loop = 0, number = 0;
  • int i, j, k;
  • for (i = 0; i <= 5; i++)
  • for (j = 0; j <= 10; j++)
  • for (k = 0; k <= 50; k+=5)
  • {
  • loop++;
  • if (i*10 + j*5+ k == 50)
  • number++;
  • }
  • printf("共%d種,執行迴圈%d次\n",number,loop);
  • }
  • 【執行結果】
  • 共36種,執行迴圈726次
slide16

【方法-3】

  當 i*10 + j*5 + k = 50時,應立即跳出最內

  層迴圈,因為再變化 k 之值,i*10 + j*5 + k

  均已大於 50。

<執行迴圈次數>491

slide17

main()

  • {
  • int loop = 0, number = 0;
  • int i, j, k;
  • for (i = 0; i <= 5; i++)
  • for (j = 0; j <= 10; j++)
  • for (k = 0; k <= 50; k+=5)
  • {
  • loop++;
  • if (i*10 + j*5+ k == 50)
  • {
  • number++; break;
  • }
  • }
  • printf("共%d種,執行迴圈%d次\n",number,loop);
  • }
  • 【執行結果】
  • 共36種,執行迴圈491次
slide18

【方法-4】

  當 i 和 j 之值固定後,k 之值只有唯一的選擇,

  因此不必考慮 k 的變化情形。

i=0,j可能為 0,1,2,…,10 (50-i*10)/5=10

i=1,j可能為 0,1,2,…,8 (50-i*10)/5=8

i=2,j可能為 0,1,2,…,6 (50-i*10)/5=6

.

.

.

i=5,j可能為 0 (50-i*10)/5=0

<執行迴圈次數>36

slide19

main()

  • {
  • int loop = 0, number = 0;
  • int i, j;
  • for (i = 0; i <= 5; i++)
  • for (j = 0; j <= (50-i*10)/5; j++)
  • {
  • loop++;
  • number++;
  • }
  • printf("共%d種,執行迴圈%d次\n",number,loop);
  • }
  • 【執行結果】
  • 共36種,執行迴圈36次
slide20

【方法-5】

  •   由上一個方法知,當 i 的值固定後,j 的變化情形
  •   只有 (50-i*10)/5 種,因此只需對 i 做迴圈。
  • <執行迴圈次數>6
  • main()
  • {
  • int loop = 0, number = 0;
  • int i;
  • for (i = 0; i <= 5; i++)
  • {
  • loop++;
  • number += (50-i*10)/5 + 1;
  • }
  • printf("共%d種,執行迴圈%d次\n",number,loop);
  • }
  • 【執行結果】
  • 共36種,執行迴圈6次
slide21

【方法-6】

  •   我們計算的值其實是一個等差級數,即
  • 11+9+7+…+1=6*(11+1)/2=36
  •   將等差級數的公式寫成程式即可計算。
  • main()
  • {
  • int number = 0, a, b, n = 50;
  • a = n / 5 + 1;
  • if (a % 2 == 0) b = 2;
  • else b = 1;
  • number = (a+b)*((a-b)/2+1)/2;
  • printf("共%d種\n", number);
  • }
  • 【執行結果】
  • 共36種
slide22
上課教室與圖形著色

8:00

18:00

課程A

B

C

D

E

區間圖形著色問題(interval graph coloring):

A

C1

C1:第一個顏色

C2:第二個顏色

C3:第三的顏色

C3

D

C2

B

C1

C2

C

E

slide23
問題難易度
  • 容易的問題:在多項式時間(polynomial time)可

解決的問題

如:排序,找最大值

  • 困難的問題:NP-complete,NP-hard

如:分割問題(Partition Problem)

推銷員問題(Traveling Salesperson Problem)

  • 不可解的問題:用演算法無法解決的問題

如:停止問題(Halting Problem)

slide27
環球旅遊與推銷員問題

平面上給予 n 個點,從某一點出發,經過每個點一次,再回到出發點,而其總長度為最短

此為 NP-complete問題

slide28
職棒比賽與分割問題

給予一個正整數的集合A={a1, a2, … , an},是否可以將其分割成兩個子集合,而此兩個子集合的個別總和相等。

例:A = { 1, 3, 8, 4, 10}

可以分割:{1, 8, 4} 及 {3, 10}

此為 NP-complete問題

0 1 knapsack
股票投資與0/1 knapsack問題

有n個東西,每個東西有其個別價值(value)與重量(weight)另有一個袋子,其容量為M,如何選取某些東西,使其總重要不超過M,而其總價值為最高。

例:

M = 14

最佳(optimal)解法:P1、P2、P3、P5

0/1 knapsack問題為NP-complete

slide30
生物資訊與演算法
  • 人類DNA序列由30億(3109)個鹼基對(base pair)所組成
  • 人類DNA序列草圖於2000年5月公佈
  • 生物資訊之研究需要大量計算,如字串比對、序列排列、相似度計算、演化樹
slide31
結論
  • 演算法是邏輯思考的實現
  • 程式設計是演算法的實現
  • 演算法可以訓練每個人思路謹慎細密
  • 有錢人可以買快速的硬體,但良好的演算法可以節省金錢
  • 良好的演算法可以加速解決問題或解決資料量更大的問題
  • 各個領域均應善用良好的演算法
slide32
參考書目
  • 較易書籍
    • 資料結構 戴顯權 著 紳藍出版社 07-3480411
    • Computer Algorithms: Introduction to Design & Analysis,

by S. Baase and A. V. Gelder

歐亞書局 02-23636141

    • Data Structures and Algorithm Analysis

by M. A. Weiss, 滄海書局 04-22521013

  • 較深入書籍
    • Introduction to the Design and Analysis of Algorithms

by R. C. T. Lee, R. C. Chang, S. S. Tseng and Y. T. Tsai

旗標圖書 02-23963257

    • Introduction to Algorithms, by T. H. Cormen, C. E. Leiserson and R. L. Rivest 開發圖書 02-23629900
    • Computer Algorithms, by E. Horowitz, S. Sahni and S. Rajasekaran 台北圖書 02-23625376
slide33

~ The End ~

謝謝聽講

中山資工 http://www.cse.nsysu.edu.tw