亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        高職計算思維教育視域下Euclidean算法研究

        2020-09-03 02:19:23耿江濤匡增意熊曉波鐘超婷
        理論與創(chuàng)新 2020年13期
        關(guān)鍵詞:計算思維高職教育

        耿江濤 匡增意 熊曉波 鐘超婷

        【摘 ?要】大數(shù)據(jù)和人工智能的發(fā)展,促使對計算思維更加系統(tǒng)和深刻的認知,其本質(zhì)特征是計算模型和相應(yīng)的算法設(shè)計,計算思維是新時代公民教育的基本內(nèi)容,也是高職學(xué)生計算思維范式培養(yǎng)的重要內(nèi)容。但在高職教育的算法思維問題求解領(lǐng)域,缺乏合適的案例進行貫穿問題求解框架的教學(xué)。本文對傳統(tǒng)Euclidean算法進行計算思維教育視域下的研究,特別是通過對算法實現(xiàn)程序正確性的形式化證明,為高職院校在算法思維問題求解過程提供了適用、完整的案例。

        【關(guān)鍵詞】 計算思維;Euclidean算法;高職教育;程序正確性;形式化證明

        引言

        陳國良院士2020年在核心期刊《中國大學(xué)教學(xué)》發(fā)表《走向計算思維2.0》指出,自美國卡內(nèi)基·梅隆大學(xué)周以真教授在權(quán)威期刊ACM通訊上提出計算思維(Computational Thinking)新概念以來,計算思維的概念不僅滲透到大學(xué)各學(xué)科的教學(xué)內(nèi)容,且已延伸到中小學(xué),計算思維被認為是繼數(shù)學(xué)邏輯思維、物理實證思維后的第三種思維方式,成為新時代公民教育極為重要的基本內(nèi)容。計算思維常被形象化的描述為計算機科學(xué)家解決問題時所用的思維,其本質(zhì)特征是抽象與自動化。這一時期為計算思維1.0時代。

        近年來,在大數(shù)據(jù)和人工智能推動下,促進了AI賦能的智能時代發(fā)展,產(chǎn)生眾多新的計算模型及算法設(shè)計技術(shù)。2018年,國際教育技術(shù)學(xué)會(ISTE)發(fā)布《教育者計算思維能力標準》,強調(diào)教育者將計算思維融入學(xué)科教學(xué)的五方面標準。這些工作促進了對計算思維更加系統(tǒng)和深刻的認知,其本質(zhì)是計算模型和相應(yīng)的算法設(shè)計,進入計算思維2.0時代,體現(xiàn)出與1.0時代的顯著不同的特點。

        在此背景下,國內(nèi)高校積極開展以計算思維為導(dǎo)向的計算機課程改革及研究,戰(zhàn)德臣教授在對本科計算思維教育的探索中,使用計算之樹概括了計算機課程計算思維教育空間,闡明了教學(xué)內(nèi)容體系,并在新工科教育中開展了計算思維能力培養(yǎng)的實踐,學(xué)者竇祥國也在積極探索適合高職教育的計算思維培養(yǎng)途徑。

        1. 高職計算思維教育的現(xiàn)狀

        與普通高校相比,計算思維培養(yǎng)在高職教育中的研究被嚴重忽視。在中國知網(wǎng)以“計算思維”為關(guān)鍵詞檢索核心期刊,查到文獻超過330篇,其中與高職相關(guān)的文獻僅有6篇。雖然程序設(shè)計課程被公認為實施計算思維教育的有力工具,但針對高職程序設(shè)計課程研究計算思維教育,在核心期刊上的文獻僅有2篇,表明這方面的研究欠缺深度和廣度。

        從現(xiàn)有的研究和教學(xué)實踐看,針對程序設(shè)計課程中算法類問題求解思維的教學(xué),由于抽象、涉及知識點多的特點,應(yīng)當(dāng)采取案例化的教學(xué)方法闡釋一般性的思維方式和抽象概念,通過案例教學(xué)培養(yǎng)學(xué)生計算思維能力。

        實施案例教學(xué),關(guān)鍵核心案例的選擇,既要適合高職學(xué)生的特點和基礎(chǔ),避免難度過大;又不能過于簡單而難以貫穿求解的全過程。然而現(xiàn)有的研究都無法提供適合高職學(xué)生水平、又能貫穿問題求解全過程進行計算思維能力培養(yǎng)的恰當(dāng)案例。

        Euclidean算法是非常成熟的算法,易于理解,實現(xiàn)代碼復(fù)雜度低,有較完善的基礎(chǔ)研究,已有各種程序設(shè)計語言的實現(xiàn)代碼。因此選取Euclidean算法作為高職教育培養(yǎng)計算思維的案例,既能適應(yīng)高職學(xué)生現(xiàn)有的基礎(chǔ),又能貫穿問題求解過程,是非常理想的典型案例。

        2 .基于計算思維教育的Euclidean算法研究

        陳國良院士指出,計算思維2.0的本質(zhì)是計算模型及算法設(shè)計。具體到計算學(xué)科算法問題求解框架,抽象表示、理論分析和設(shè)計實現(xiàn)是其中重要的三個過程。設(shè)計實現(xiàn)是從工程實踐的角度,用程序設(shè)計語言實現(xiàn)算法、構(gòu)造計算系統(tǒng)來改造世界的過程;理論分析是從數(shù)學(xué)和計算理論的角度,對算法的正確性和有效性進行證明,是發(fā)現(xiàn)世界規(guī)律的過程;抽象表示是從科學(xué)抽象和數(shù)學(xué)分析的角度,感性認識世界構(gòu)建計算模型的過程。認識世界→發(fā)現(xiàn)規(guī)律→改造世界,是計算學(xué)科發(fā)展的基本過程。

        分析現(xiàn)階段職業(yè)高校程序設(shè)計類課程的教學(xué)實際,可以看到,由于學(xué)生的數(shù)學(xué)基礎(chǔ)薄弱、教師計算理論水平有限,特別是缺乏適當(dāng)?shù)慕虒W(xué)案例,導(dǎo)致問題求解思維中的抽象表示和理論分析過程沒有實質(zhì)地開展,僅是將設(shè)計實現(xiàn)作為現(xiàn)階段程序設(shè)計課程教學(xué)的核心內(nèi)容,這對開展系統(tǒng)的計算思維教育極為不利。

        Euclidean算法又稱輾轉(zhuǎn)相除法,是求兩個正整數(shù)最大公約數(shù)(Greatest Common Divisor, gcd)的算法,從表面看僅涉及小學(xué)數(shù)學(xué)知識,非常容易理解,且Euclidean算法實現(xiàn)代碼的復(fù)雜度較低,是高職實施計算思維教育中極為理想的案例算法。

        下面從抽象表示、理論分析和設(shè)計實現(xiàn)三個方面對Euclidean算法進行研究。在此過程中,必須使用嚴格的數(shù)學(xué)和計算理論分析,故在研究方法上,充分考慮高職學(xué)生的特點,從簡單的數(shù)學(xué)基礎(chǔ)出發(fā),摒棄數(shù)學(xué)家嚴密的證明過程,以學(xué)生易于理解的方式進行推導(dǎo),在不失正確性基礎(chǔ)上構(gòu)建問題求解框架,以期培養(yǎng)學(xué)生建立完整的算法問題求解思維體系。

        2.1 Euclidean算法的抽象表達

        抽象表達是對客觀事物進行描述、建立具體問題的計算模型的過程,是由感性認識到理性認識飛躍的關(guān)鍵環(huán)節(jié)。以下從Euclidean算法解決問題的背景出發(fā),經(jīng)過數(shù)學(xué)抽象處理,得到算法的抽象數(shù)學(xué)描述和具體的ANSI流程圖表示。

        2.1.1 問題背景-丟番圖方程

        丟番圖方程是指求解一個或多個變量的整系數(shù)方程的整數(shù)解,是由代數(shù)之父、古希臘的大數(shù)學(xué)家丟番圖(Diophantine)提出,是數(shù)論中基礎(chǔ)的研究內(nèi)容,其可解性被希爾伯特列為著名的23個數(shù)學(xué)問題中的第10題。

        對于一元線性丟番圖方程:ax=b,只要a能整除b,則方程有整數(shù)解,且解為b/a。

        對于二元線性丟番圖方程:ax+by=c,其可解性由Bézout定理給出,即先求a和b 的最大公約數(shù)d=gcd(a,b),若d能整除c,則此方程有整數(shù)解。

        可見,整除、最大公約數(shù)是丟番圖方程的研究基礎(chǔ),也是數(shù)論基礎(chǔ)的研究內(nèi)容。

        2.1.2 數(shù)論基礎(chǔ)

        2.1.2.1 除法算法定理

        定理1 除法算法:對任意給定的整數(shù)a 和b,其中b > 0,存在唯一的整數(shù)對q(商)和r(余數(shù))使得 a=qb+r,且0≤r

        在除法算法定理中,若r=0,則 a=qb,則稱a可被b整除,記為 b | a 。

        如果整數(shù)d滿足d | a ?且d | b ,則稱 d 為a ?和 b 的公約數(shù)。

        2.1.2.2 最大公約數(shù)的嚴格數(shù)學(xué)定義

        如果整數(shù)d為a和b的公約數(shù),且對a ?和 ?b的其他公約數(shù) d′,都有d′|d ,則稱 d 為 a 和 ?b的最大公約數(shù),記為d=gcd(a,b) 。

        2.1.3 Euclidean算法表述

        2.1.3.1 Euclidean算法數(shù)學(xué)表達

        定理2 Euclidean算法:對任意給定的正整數(shù) a 和 b,計算最大公約數(shù)的算法過程為:gcd (a,b)=gcd(b,a mo d b) 其中a mo d b ,表示用a ?除b ?所得到的余數(shù)r 。

        2.1.3.2 Euclidean算法的ANSI流程圖表示

        圖1為Euclidean算法的ANSI流程圖(Flowchart)表示,見算法程序的正確性證明部分。

        2.1.3.3 擴展Euclidean算法

        定理3 Bézout定理:對非零整數(shù) a和b ?,存在整數(shù)r ?和 s ,使得gcd(a,b)=ar+bs, ?r 和s ?稱為Bézout系數(shù)。(證明從略)

        Bézout定理表明,非零整數(shù) a 和b ?的最大公約數(shù)一定能表達為 ?a和 b 的線性組合。據(jù)此對Euclidean算法進行推廣,得到擴展Euclidean算法(extended Euclidean algorithm,xgcd),不但能計算出兩個非零整數(shù) a 和 b 的最大公約數(shù),還同時計算出這個最大公約數(shù)如何表達為 a 和 b 的線性組合,即Bézout系數(shù)。

        2.2 Euclidean算法的理論分析

        首先對算法的正確性和有效性進行證明,再對算法實現(xiàn)程序給予正確性的形式化證明。

        2.2.1 Euclidean算法的正確性和有效性

        以下用數(shù)論基礎(chǔ)理論證明Euclidean算法的正確性和有效性。

        2.2.1.1 Euclidean算法的正確性證明

        要證明 gcd(a,b)=gcd(b,a mo d b) ,不失一般性,不妨設(shè) a>b>0,則只要證明gcd(a,b)=gcd(a-b,b) ?即可。

        根據(jù)模除消減定理,算法在連續(xù)兩次迭代后,a 和 ?b的值都至少消減了一半,意味著算法在O(log a) 步之后會終止。事實上,已經(jīng)證明,算法的時間復(fù)雜度為O(log b)。

        2.2.2 Euclidean算法實現(xiàn)程序的正確性

        采用軟件測試方法可以發(fā)現(xiàn)程序中的錯誤,卻不能證明程序中沒有錯誤。而程序正確性理論則可以證明程序的正確性。程序正確性的形式化方法能夠嚴格分析、證明程序及其性質(zhì),對于確保程序正確性和提高可信性具有基礎(chǔ)性的作用。

        根據(jù)程序正確性理論,程序的完全正確,等價于該程序是部分正確,同時又是終止的。因此,以下通過Floyd不變式斷言法先證明Euclidean算法程序的部分正確性,再使用Knuth計數(shù)器法證明Euclidean算法程序的終止性,從而證明了Euclidean算法程序的完全正確性。

        2.2.2.1 Floyd斷言法證明程序的部分正確性

        Floyd的不變式斷言法是證明程序部分正確性的方法,主要通過以下三個步驟進行證明。

        完全正確性:綜合上述證明,程序是部分正確的且也是終止的,故程序是完全正確的。

        2.3 Euclidean算法的設(shè)計實現(xiàn)

        Euclidean算法gcd及擴展Euclidean算法xgcd都可以使用迭代和遞歸兩種方式實現(xiàn)。另外,既可以使用C/C++語言實現(xiàn),也可以使用Python語言實現(xiàn)。

        2.3.1 gcd算法的實現(xiàn)示例

        (1)遞歸實現(xiàn)gcd算法的C/C++版

        (2)迭代實現(xiàn)gcd算法的C/C++版

        (3) 高效二進制實現(xiàn)gcd算法(Stein算法)的C++版

        算法核心是避免使用復(fù)雜的乘除法計算,而使用減法和更高效的移位操作來提高效率。

        int binary_gcd(int a, int b) { int k = 0;

        while ( ?。?(a | b) & 1 ) )

        a >>= 1, b >>= 1, k++;

        while ( ?。?a & 1)) a >>= 1;

        while ( b ) {

        while ( ??。?b & 1) ) b >>= 1;

        if ( b < a ) swap( a, b);

        b = ( b - a ) >> 1; ?}

        return ( a << k ); ?}

        (4)使用Python包中函數(shù)計算最大公約數(shù)

        在Python中,還可以使用函數(shù) ?或 ?計算最大公約數(shù)。

        2.3.2 xgcd算法的實現(xiàn)(Python實現(xiàn))

        def xgcd( a, b ) :

        r0, s0, r1, s1 = 1, 0, 0, 1

        while b :

        q, a, b = a // b, b, a % b

        r0, s0, r1, s1 = r1, s1, r0 - q * r1, s0 - q * s1

        return a, r0, s0

        3. Euclidean算法的綜合實驗

        為測試Euclidean算法在各種實現(xiàn)下的效率即時間性能,設(shè)計了兩組實驗進行性能統(tǒng)計。

        3.1 Euclidean算法C++版各種實現(xiàn)的實驗

        實驗數(shù)據(jù)集:隨機生成200對隨機數(shù),分別采用Euclidean算法的遞歸、迭代和二進制等三種實現(xiàn)程序,對每對隨機數(shù)進行一百萬次的求最大公約數(shù)。

        實驗結(jié)果:由于采用隨機數(shù),每次運行的結(jié)果有細微的差距,但以秒為單位時,運行時間基本穩(wěn)定。具體情況是,遞歸實現(xiàn)運行約16.5秒,迭代實現(xiàn)運行約15.1秒,二進制實現(xiàn)運行約13.6秒。

        結(jié)果分析:Euclidean算法的二進制實現(xiàn)最為高效,遞歸實現(xiàn)耗時最長,效率最低,這是由于會使用函數(shù)的遞歸調(diào)用,增加了額外的開銷所致。

        3.2 Euclidean算法C++與Python各種實現(xiàn)的實驗

        實驗數(shù)據(jù)集:對兩個大整數(shù)1160718174、316258250,分別采用Euclidean算法在C++、Python的遞歸、迭代和二進制等各三種實現(xiàn)程序,以及Python的語言包中的函數(shù)對這對大整數(shù)進行二千萬次的求最大公約數(shù)。

        實驗結(jié)果:由于隨機干擾,每次運行的結(jié)果有細微的差距,但以秒為單位時,運行時間基本穩(wěn)定。具體情況是:

        C++編程遞歸實現(xiàn)運行約2.7秒,迭代實現(xiàn)運行約1.5秒,二進制實現(xiàn)運行約1.5秒;

        Python編程遞歸實現(xiàn)運行約31.1秒,迭代實現(xiàn)運行約21.0秒,二進制實現(xiàn)運行約13.5秒,函數(shù)包中的 運行約7.2秒,運行27.8秒。

        結(jié)果分析:Euclidean算法的C++實現(xiàn)都非常高效,而各種Python實現(xiàn)都較C++慢幾倍以上,在這些實現(xiàn)中,只有 ?運行程序時間最短,可以優(yōu)先使用。

        4. 結(jié)語

        算法思維是典型的計算思維,也是其核心概念。掌握算法類問題的求解過程,樹立完整的問題求解框架,對計算思維的培養(yǎng)具有重要的意義。以上對Euclidean算法的研究,旨在為高職計算思維教育提供典型的案例。在案例使用中,框架和求解的過程、結(jié)構(gòu)是教學(xué)的核心內(nèi)容;而證明和分析,則是建立計算模型的基礎(chǔ);算法實現(xiàn)的正確性和效率,則是計算思維實際應(yīng)用的指南。

        參考文獻

        [1] 陳國良,李廉,董榮勝.走向計算思維2.0[J].中國大學(xué)教學(xué),2020(04):24-30.

        [2] Jannette M. Wing. Computational Thinking[J]. Communication of the ACM. 2006, 49,(3):33-35.

        [3] International Society for Technology in Education (ISTE).Computational Thinking Competencies.[EB/OL].[2020-08-03]. https://www.iste.org/standards/computational-thinking

        [4] Peter J. Denning. Remaining trouble spots with computational thinking[J]. Communications of the ACM,2017,60(6):33-39.

        [5] 戰(zhàn)德臣,王浩.面向計算思維的大學(xué)計算機課程教學(xué)內(nèi)容體系[J].中國大學(xué)教學(xué), 2014(07):59-66.

        [6] 鄧磊,戰(zhàn)德臣,姜學(xué)鋒.新工科教育中計算思維能力培養(yǎng)的價值探索與實踐[J].高等工程教育研究,2020(02):49-53.

        [7] 竇祥國.面向計算思維培養(yǎng)的高職C程序設(shè)計案例教學(xué)研究[J]. 中國職業(yè)技術(shù)教育, 2019(32):93-96.

        [8] 王戟等. 形式化方法概貌[J]. 軟件學(xué)報, 2019, 30(01):33-61.

        基金項目: 1. 廣東省教育廳2019年度普通高校特色創(chuàng)新類項目(2019GKTSCX152);2. 廣東省教育廳2018年度廣東省特色創(chuàng)新項目(2018GWTSCX055); 3. 廣東省教育廳2018年省高職質(zhì)量工程教改項目(GDJG2019309);4. 廣州涉外經(jīng)濟職業(yè)技術(shù)學(xué)院2020年校級質(zhì)量工程重點項目(SWZL202001);5. 廣州涉外經(jīng)濟職業(yè)技術(shù)學(xué)教育研究院2020年度專項研究重點課題(SWJY202001); 6. 廣州涉外經(jīng)濟職業(yè)技術(shù)學(xué)院2020年度校級重點科研項目(2018KY01); 7. 廣州涉外經(jīng)濟職業(yè)技術(shù)學(xué)院2018年校級教研項目(2018JY25)

        作者簡介:耿江濤,副教授,高級工程師,華南師范大學(xué)博士生,廣州涉外經(jīng)濟職業(yè)技術(shù)學(xué)院華文與國際教育學(xué)院院長。研究方向:大數(shù)據(jù)應(yīng)用,程序設(shè)計雙語教學(xué);

        *通訊作者:匡增意,副教授,碩士,廣州涉外經(jīng)濟職業(yè)技術(shù)學(xué)院常務(wù)副校長。研究方向:高職教育管理。E-mail: 2801756492@qq.com;

        熊曉波,教授,碩士,廣州涉外經(jīng)濟職業(yè)技術(shù)學(xué)院副校長兼信息工程學(xué)院院長。研究方向:計算機課程教學(xué);

        鐘超婷,講師,碩士,廣州涉外經(jīng)濟職業(yè)技術(shù)學(xué)院華文與國際教育學(xué)院專任教師。研究方向:高職教學(xué)實踐。

        猜你喜歡
        計算思維高職教育
        基于計算思維的軟件類研究生高級算法課程教學(xué)研究
        計算機教育(2016年7期)2016-11-10 08:40:00
        基于計算思維程序設(shè)計的軍事案例研究
        計算機教育(2016年7期)2016-11-10 08:36:56
        程序設(shè)計課程中計算思維和應(yīng)用能力培養(yǎng)問題研究
        計算機教育(2016年7期)2016-11-10 08:16:19
        現(xiàn)代學(xué)徒制人才培養(yǎng)模式下的高職軟件技術(shù)專業(yè)課程體系改革研究
        民族高校C語言程序設(shè)計課程教學(xué)改革的研究
        軟件工程(2016年8期)2016-10-25 16:03:32
        人文主義視野下的高職教育研究
        職業(yè)(2016年10期)2016-10-20 21:52:25
        以就業(yè)為導(dǎo)向的高職學(xué)生綜合素質(zhì)培養(yǎng)研究
        中國市場(2016年35期)2016-10-19 03:04:11
        微商思維在高職市場營銷教學(xué)中的應(yīng)用探究
        中國市場(2016年35期)2016-10-19 02:57:22
        算法的案例教學(xué)探析
        淺談藝術(shù)專業(yè)學(xué)生計算思維能力的培養(yǎng)
        3d动漫精品一区二区三区| 91久久国产香蕉熟女线看| 亚洲人成网77777色在线播放| 亚洲国产欧美日韩欧美特级| 久久AV老司机精品网站导航| 日韩毛片久久91| 国产精品国产三级国产专区50| 日韩人妻中文无码一区二区| 国精无码欧精品亚洲一区| 亚洲AV无码专区国产H小说| 我的极品小姨在线观看| 日本真人添下面视频免费| 性生交大片免费看淑女出招 | 精品国产夫妻自拍av| 亚洲午夜狼人综合影院| 中国农村妇女hdxxxx| 亚洲成av人片无码不卡播放器| 国产精品美女自在线观看| 日本在线视频www色| 无码人妻黑人中文字幕| AV无码免费不卡在线观看| 人妻少妇偷人精品视频| 朋友的丰满人妻中文字幕| 久久不见久久见免费视频7| 国产极品喷水视频| 国产一区二区精品人妖系列在线| 人妻 日韩 欧美 综合 制服| 亚洲国产精品一区二区久| 在线视频一区二区在线观看| 亚洲国产一区二区三区| 免费人成视频在线| 国产精品白浆无码流出| 精品国产中文久久久免费| 国产成人精品999视频| 全免费a级毛片免费看视频| 国内精品人人妻少妇视频| 中文字幕一区二区人妻秘书| 怡红院a∨人人爰人人爽| 中文字幕久久精品波多野结百度| 情av一区二区三区在线观看| 欧美另类人妖|