馬竹娟,余新宏,吳德釗,楊 坤
(1.安徽農(nóng)業(yè)大學(xué)經(jīng)濟(jì)技術(shù)學(xué)院,合肥 230011;2.安徽涉外經(jīng)濟(jì)職業(yè)學(xué)院,合肥 230001)
數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)科學(xué)中有著舉足輕重的作用,不僅是計(jì)算機(jī)專業(yè)的核心課程,也是其他理工類專業(yè)如機(jī)械、電子等的選修課程。大多數(shù)學(xué)生在學(xué)習(xí)該課程時(shí)感到課程過(guò)于抽象,難以理解,甚至有學(xué)生錯(cuò)誤的認(rèn)為數(shù)據(jù)結(jié)構(gòu)與計(jì)算機(jī)的應(yīng)用關(guān)系不大。為了提高學(xué)生的學(xué)習(xí)興趣,拓寬知識(shí)面,在教學(xué)中加深數(shù)據(jù)結(jié)構(gòu)與應(yīng)用的聯(lián)系,本文結(jié)合虛擬儀器實(shí)驗(yàn)平臺(tái)的優(yōu)勢(shì),以二叉樹(shù)在圖像信息加密中的應(yīng)用為例,形成課堂案例教學(xué),將二叉樹(shù)的性質(zhì)、存儲(chǔ)結(jié)構(gòu),以及遍歷方法等應(yīng)用到圖像信息的加密中,既活躍課堂氣氛,也極大的提高了學(xué)生的學(xué)習(xí)興趣。
樹(shù)型結(jié)構(gòu)是用來(lái)表示一對(duì)多的重要模型,其中二叉樹(shù)是一種特殊的樹(shù)型結(jié)構(gòu),其特殊性在于:其一,二叉樹(shù)中的任意結(jié)點(diǎn)至多有2棵子樹(shù)。其二,二叉樹(shù)的子樹(shù)有左右之分。因此二叉樹(shù)通??梢员硎境扇齻€(gè)相對(duì)獨(dú)立的部分,即根、左子樹(shù)、右子樹(shù)。其中,左子樹(shù)和右子樹(shù)也是符合本定義的二叉樹(shù)。顯然,二叉樹(shù)的定義是一個(gè)遞歸的定義[1]。對(duì)二叉樹(shù)的遍歷的討論,即如何確定一條搜索路徑,使得能夠?qū)Χ鏄?shù)中的每個(gè)結(jié)點(diǎn)進(jìn)行一次訪問(wèn)且只訪問(wèn)一次。由于對(duì)二叉樹(shù)根結(jié)點(diǎn)訪問(wèn)時(shí)機(jī)不同,通??梢詫⒈闅v方法分為三種:先序遍歷、中序遍歷和后序遍歷。這三種遍歷方法也是遞歸進(jìn)行的,可以證明,由二叉樹(shù)的中序和先序遍歷序列或者中序和后序遍歷序列可以唯一確定一棵二叉樹(shù)[2]。
數(shù)字圖像加密技術(shù)可以在信息傳輸領(lǐng)域起到隱藏信息的作用,從而提高安全性。一個(gè)圖像可以看成是一個(gè)M×N個(gè)像素組成的矩陣,以3×3的矩陣為例,如下所示:
將加密二叉樹(shù)的中序遍歷序列轉(zhuǎn)換成對(duì)應(yīng)的二維矩陣,以該矩陣所形成的圖像即為加密圖像。
例如,加密二叉樹(shù)的中序遍歷序列為:bhdeiafcg
由該矩陣構(gòu)成的圖像即為加密圖像。
本文采用虛擬儀器實(shí)驗(yàn)平臺(tái)對(duì)本算法進(jìn)行實(shí)現(xiàn),通過(guò)虛擬實(shí)驗(yàn)平臺(tái)向?qū)W生展示原始圖像和加密圖像的對(duì)比,如圖2所示:
圖2 原始圖對(duì)加密圖對(duì)比
解密的過(guò)程是加密的逆操作。具體步驟如下:
(1)接收方需獲得加密圖和加密二叉樹(shù)的后序遍歷序列。(2)接收方從秘密通道獲得密鑰,即由原始圖像的二維矩陣所構(gòu)成的原二叉樹(shù)的中序遍歷序列。(3)接收方將加密圖轉(zhuǎn)換成二維矩陣,以行序?yàn)橹鞯捻樞蜃x取矩陣中的數(shù)據(jù),所獲得的序列即為加密二叉樹(shù)的中序遍歷序列。(4)根據(jù)加密二叉樹(shù)的中序、后序遍歷序列,確定加密二叉樹(shù)樹(shù)形,從而獲得加密二叉樹(shù)的先序遍歷序列。(5)由于加密二叉樹(shù)的先序遍歷序列與原圖像所構(gòu)成的完全二叉樹(shù)相同,結(jié)合密鑰,唯一確定與原始圖像相對(duì)應(yīng)的完全二叉樹(shù)。(6)將用于存儲(chǔ)完全二叉樹(shù)的一維數(shù)組轉(zhuǎn)換成二維矩陣,最終恢復(fù)原圖。
在實(shí)際通信中,甲方將加密圖發(fā)給乙方,并公開(kāi)一個(gè)后序遍歷序列,乙接收后向甲方確認(rèn)回復(fù),男方再通過(guò)秘密渠道向乙方發(fā)送密鑰,即原二叉樹(shù)的中序遍歷序列。甲方獲得三方信息,可根據(jù)上述解密過(guò)程可以恢復(fù)原圖。該方法也可以用于文字信息加密,我方密鑰管理,數(shù)字認(rèn)證等,可應(yīng)用于商業(yè)、軍事等多個(gè)領(lǐng)域。
案例教學(xué)將理論與實(shí)際應(yīng)用相結(jié)合,大大提高了學(xué)生的學(xué)習(xí)興趣,不僅有利于學(xué)生對(duì)課堂理論知識(shí)的掌握,也激發(fā)了學(xué)生對(duì)計(jì)算機(jī)技術(shù)的探索欲望。