資源簡(jiǎn)介 體驗(yàn)計(jì)算機(jī)解決問題的過程 學(xué)習(xí)目標(biāo) 體驗(yàn)計(jì)算機(jī)解決問題的過程。 學(xué)習(xí)內(nèi)容 在現(xiàn)實(shí)生活中,我們經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì),分析。當(dāng)數(shù)據(jù)量不多時(shí), 我們可以采用人工方法來處理;然而,當(dāng)數(shù)據(jù)量變多時(shí),我們運(yùn)用計(jì)算機(jī)來解決問題將是一種更高效,更便捷的方法。 人工解決問題的過程 采用人I方法來解決問題,首先需要明確所要解決的問題和給出的條件,然后再根據(jù)E 3有的經(jīng)驗(yàn)和知識(shí)確定解決問題的方法,從而解決問題。 探究活動(dòng) 如何設(shè)計(jì)從A市到B市耗時(shí)最少的旅行路線方案呢?我們從鐵路公司、各航空公司和汽車客運(yùn)公司網(wǎng)站得知,直達(dá)B市的交通工具只有火車和汽車兩種,出發(fā)地有B1 , B2, .. , Bk市(沒有A市) , 從A市出發(fā)到B1 , B2 , .. , Bk市的交通具有飛機(jī)、車和汽車三種,這樣從A市經(jīng)B1 ,B2 。 由于從A市到B1 , B2 , ... , Bk市有不同的交通工具,每種交通工僅有不同的班次,因此從A市出發(fā)到中轉(zhuǎn)城市B1 , B2 , .. , Bk市就有M1、M2 , .. , Mk種班次。同樣,從中轉(zhuǎn)城市B1 , B2 , .... , Bk市到B市也有不同的交通工具,-種交通工具有不同的班次,因此從中轉(zhuǎn)城市B1,B2,....,Bk市到B市就有N1,N2,..,Nk種班次。于是從A市經(jīng)B1,B2,...,Bk市到B市的交通班車(班機(jī))數(shù)共有:S=M1xN1 +M2xN2+... + MkxNk 尋找從A市到B市耗時(shí)最少的旅行路線問題就轉(zhuǎn)化為在S種聯(lián)運(yùn)班次中找到一種耗時(shí)最少的聯(lián)運(yùn)班次。這樣就需要遍歷每一個(gè)班次進(jìn)行比較 ,人工方式找到能夠中轉(zhuǎn)且等待時(shí)間和行駛時(shí)間最少的班次,工作量極其浩大! 假設(shè)從A市到B市的中轉(zhuǎn)城市只有B1 , B2市,從A市經(jīng)B1 , B2市到市的交通情況如表3-2和表3-3所示。 于是,從A市經(jīng)B1市到B市的聯(lián)運(yùn)班次有7x9=63班;從A市經(jīng)B2市到B市的聯(lián)運(yùn)班次有12x9=108班,合計(jì)為S=63+ 108=171班。然后在171班次中找到能夠中轉(zhuǎn)且等待時(shí)間加上行駛時(shí)間最少的聯(lián)運(yùn)班次。 采用以下的思路求解耗時(shí)最少的聯(lián)運(yùn)班次問題: (1)找出能夠中轉(zhuǎn)的從A市經(jīng)B1市到達(dá)B市的聯(lián)運(yùn)班次,計(jì)算所用的時(shí)間。 (2)找到能夠中轉(zhuǎn)的從A市經(jīng)B1市到達(dá)B市的聯(lián)運(yùn)班次中耗時(shí)最少的聯(lián)運(yùn)班次 (3)找出能夠中轉(zhuǎn)的從A市經(jīng)B2市到達(dá)B市的聯(lián)運(yùn)班次,并計(jì)算所用的時(shí)間。 (4)找到能夠中轉(zhuǎn)的從A市經(jīng)B2市到達(dá)B市的聯(lián)運(yùn)班次中耗時(shí)最少的聯(lián)運(yùn)班次。 (5)取兩條線路中耗時(shí)最少的聯(lián)運(yùn)班次為最佳旅行路線。 上述問題中,假如中轉(zhuǎn)城市很多,交通班次也很多,找出耗時(shí)最少路線的工作量會(huì)非常大,若用人工窮舉遍歷,效率就會(huì)很低。 計(jì)算機(jī)解決問題的過程 當(dāng)數(shù)據(jù)量很大, 人工處理效率很低時(shí),我們可以借助計(jì)算機(jī),通過編寫計(jì)算機(jī)程序解決問題。編寫計(jì)算機(jī)程序解決問題要經(jīng)過分析問題,設(shè)計(jì)算法,編寫程序,調(diào)試運(yùn)行程序等若千個(gè)步驟。 1.分析問題 在利用計(jì)算機(jī)解決問題之前,我們首先要分析問題的需 求情況、已知條件和需要解決的問題。 在從A市到B市耗時(shí)最少的旅行路線問題中,在不知道有多少個(gè)中轉(zhuǎn)城市和每個(gè)城市有多少班車(或飛機(jī))的情況下,我們可以利用大數(shù)據(jù)挖掘技術(shù)中的爬蟲程序(參見配套學(xué)習(xí)資源包”第三章\課本素材\程序3-1” )到鐵路網(wǎng)站、各航空公司和汽車客運(yùn)公司網(wǎng)站獲取從A市經(jīng)中轉(zhuǎn)城市B1 , B2 , .. , Bk市到達(dá)B市的交通班次信息,經(jīng)過數(shù)據(jù)清洗,形成結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)為Excel文件。 2.設(shè)計(jì)算法 問題分析清楚后,需要給出解決問題的詳細(xì)方法和步驟,這一過程稱為設(shè)計(jì)算法。 例如,對(duì)于從A市到B市耗時(shí)最少的旅行路線問題,根據(jù)獲取的從A市到B市的中轉(zhuǎn)城市B1,B2 , .. , Bk的班次,以及各城市各交通班次的發(fā)車時(shí)間和行駛時(shí)間等信息,采用以下的思想找出耗時(shí)最少的聯(lián)運(yùn)班次問題,即算法如下: (1 )分別找出能夠中轉(zhuǎn)且中轉(zhuǎn)等待時(shí)間不小于1小時(shí)的從A市經(jīng)B1 , B2 , ... , Bk市到達(dá)B市的聯(lián)運(yùn)班次,并計(jì)算所用的時(shí)間。 ( 2 )分別找到能夠中轉(zhuǎn)的從A市經(jīng)B1 , B2 , .... , Bk市到達(dá)B市的聯(lián)運(yùn)班次中耗時(shí)最少的聯(lián)運(yùn)班次,共k條線路。 ( 3 )取k條線路中耗時(shí)最少的聯(lián)運(yùn)班次為最佳旅行路線。 3.編寫程序 有了清晰可操作的算法描述,就可以選擇一種計(jì)算機(jī)語(yǔ)言 工具來編寫程序,實(shí)現(xiàn)算法。一般.來說,只要算法確定,對(duì)計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的選擇沒有特別的限定,通常根據(jù)問題的特性和編程人員對(duì)語(yǔ)言的熟悉程度來選定編寫程序。 Python語(yǔ)言編寫從A市到B市耗時(shí)最少的旅行路線問題的算法的程序可參見配套學(xué)習(xí)資源包“第三章\課本素材\程序3-1"。其中,找出能夠從A市經(jīng)Bi(i=1, 2 , ... k )市到達(dá)B市的中轉(zhuǎn)聯(lián)運(yùn)班次,并計(jì)算所用的時(shí)間以及找到耗時(shí)最少的聯(lián)運(yùn)路線的關(guān)鍵程序段如下。 4.調(diào)試運(yùn)行程 程序編寫完成以后,再通過鍵盤把程序輸入計(jì)算機(jī)中運(yùn)行,檢查程序能否按預(yù)想的效果行,這一過程稱為程序的調(diào)試運(yùn)行。計(jì)算機(jī)只能識(shí)別程序設(shè)計(jì)語(yǔ)言中所規(guī)定的語(yǔ)法規(guī),如果編寫程序時(shí)與規(guī)則不一致,哪怕是一個(gè)標(biāo)點(diǎn)符號(hào)出錯(cuò),也會(huì)因程序出錯(cuò)而中斷運(yùn)行。此時(shí),我們可以根據(jù)計(jì)算機(jī)提示的出錯(cuò)信息修改程序,重新調(diào)試運(yùn)行。由于Python是解標(biāo)程序,因此它的調(diào)試是在運(yùn)行過程中逐行進(jìn)行的。 當(dāng)程序能夠順利運(yùn)行以后,我們還需要對(duì)程序運(yùn)行的結(jié)果進(jìn)行檢查。因?yàn)槿绻绦蛘Z(yǔ)句符合語(yǔ)法規(guī)則,而程序中卻有邏輯或計(jì)算方法等錯(cuò)誤,計(jì)算機(jī)是檢查不出來的。因此,如果結(jié)果不合理,還要對(duì)程序甚至算法進(jìn)行修改,直到程序的功能符合設(shè)計(jì)要求為止。 打開配套學(xué)習(xí)資源包"第三章課本素林程序3-1”, 調(diào)試并運(yùn)行程序3-1 ,找出從A市到B市耗時(shí)最少的旅行路線問題的結(jié)果。 耗時(shí)最少的旅行路線問題的python代碼: 課內(nèi)任務(wù):將99乘法表代碼輸入,運(yùn)行,觀察是否達(dá)到預(yù)期效果。 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫(kù)