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

        ?

        基于邊集數(shù)組的最小獨(dú)立閉合環(huán)搜索算法實(shí)現(xiàn)

        2010-09-28 01:19:20寶,陳
        測(cè)繪通報(bào) 2010年12期
        關(guān)鍵詞:鄰接矩陣數(shù)組搜索算法

        葉 寶,陳 義

        (1.同濟(jì)大學(xué)土木工程學(xué)院,上海 200092;2.蘇州工業(yè)園區(qū)測(cè)繪有限責(zé)任公司,江蘇蘇州 215021)

        基于邊集數(shù)組的最小獨(dú)立閉合環(huán)搜索算法實(shí)現(xiàn)

        葉 寶1,2,陳 義1

        (1.同濟(jì)大學(xué)土木工程學(xué)院,上海 200092;2.蘇州工業(yè)園區(qū)測(cè)繪有限責(zé)任公司,江蘇蘇州 215021)

        控制網(wǎng)的閉合差檢驗(yàn)是平差計(jì)算前的一個(gè)重要步驟,目的是發(fā)現(xiàn)原始觀測(cè)數(shù)據(jù)中的粗差并予以剔除,并評(píng)估外業(yè)觀測(cè)的質(zhì)量。根據(jù)測(cè)量控制網(wǎng)的數(shù)據(jù)結(jié)構(gòu)特點(diǎn),提出基于邊集數(shù)組存儲(chǔ)結(jié)構(gòu)的控制網(wǎng)最小獨(dú)立閉合環(huán)搜索算法的實(shí)現(xiàn)原理及具體過程。最后通過不同算例對(duì)算法的正確性進(jìn)行驗(yàn)證。

        數(shù)據(jù)結(jié)構(gòu);邊集數(shù)組;最小獨(dú)立閉合環(huán);算法

        一、引 言

        在測(cè)量平差計(jì)算前,為保證平差結(jié)果的正確性,防止觀測(cè)值可能含有粗差及系統(tǒng)誤差影響平差結(jié)果,無論是傳統(tǒng)的測(cè)量控制網(wǎng),如導(dǎo)線網(wǎng)、水準(zhǔn)網(wǎng),還是 GPS控制網(wǎng),都需對(duì)控制網(wǎng)中的各種多邊形閉合差進(jìn)行檢核,以探測(cè)、剔除粗差,并評(píng)定觀測(cè)值的質(zhì)量。因此,如何自動(dòng)搜索出控制網(wǎng)的最小獨(dú)立閉合環(huán)成為一個(gè)核心問題。最小獨(dú)立閉合環(huán)搜索算法目前主要有三種:基于鄰接矩陣變換算法、基于生成樹和余樹變換算法、基于深度優(yōu)先搜索算法[1]。一般都要用到數(shù)據(jù)結(jié)構(gòu)知識(shí),采用鄰接矩陣或鄰接表等存儲(chǔ)結(jié)構(gòu)來實(shí)現(xiàn)。本文根據(jù)控制網(wǎng)的特點(diǎn),采用了更為直觀的邊集數(shù)組的存儲(chǔ)結(jié)構(gòu),對(duì)生成樹和余樹變換算法進(jìn)行了編程實(shí)現(xiàn),并通過不同的例子,驗(yàn)證了算法的正確性。

        二、控制網(wǎng)的數(shù)據(jù)結(jié)構(gòu)

        1.數(shù)據(jù)結(jié)構(gòu)的概念

        數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。數(shù)據(jù)結(jié)構(gòu)包含數(shù)據(jù)和數(shù)據(jù)關(guān)系兩方面的基本特征。

        如圖 1所示,根據(jù)數(shù)據(jù)元素之間關(guān)系的不同特性,通常有四類基本數(shù)據(jù)結(jié)構(gòu):集合結(jié)構(gòu)、線性結(jié)構(gòu)、樹形結(jié)構(gòu)、網(wǎng)狀結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu) (logic structure)和物理結(jié)構(gòu) (physical structure)。其中數(shù)據(jù)的物理結(jié)構(gòu)包括數(shù)據(jù)元素的表示和存儲(chǔ)以及數(shù)據(jù)元素之間關(guān)系的表示和存儲(chǔ)。通常數(shù)據(jù)結(jié)構(gòu)采用數(shù)組法、鄰接表法、十字鏈表、鄰接多重表等基本的存儲(chǔ)結(jié)構(gòu)表示。

        圖1 基本類型的數(shù)據(jù)結(jié)構(gòu)

        2.控制網(wǎng)的數(shù)據(jù)結(jié)構(gòu)分析

        根據(jù)圖 1和對(duì)測(cè)量控制網(wǎng)的特點(diǎn)分析,顯然控制點(diǎn)之間是任意的、多對(duì)多的復(fù)雜關(guān)系。因此控制網(wǎng)與數(shù)據(jù)結(jié)構(gòu)中的網(wǎng)狀結(jié)構(gòu)的概念一致。通過比較,可以建立控制網(wǎng)和圖之間如表 1所示的概念映射關(guān)系。

        表 1 測(cè)量控制網(wǎng)與圖的概念間的映射關(guān)系

        對(duì)于測(cè)量控制網(wǎng)而言,可以采用圖的鄰接矩陣等存儲(chǔ)結(jié)構(gòu)表示。考慮到測(cè)量控制網(wǎng)的特點(diǎn),總是由一系列控制點(diǎn)和邊組成的網(wǎng)狀結(jié)構(gòu),因此可以從圖的定義出發(fā),采用點(diǎn)集數(shù)組和邊集數(shù)組的存儲(chǔ)結(jié)構(gòu)(包括數(shù)據(jù)元素和數(shù)據(jù)元素關(guān)系的存儲(chǔ))。二者均采用結(jié)構(gòu)體數(shù)組,點(diǎn)集數(shù)組存儲(chǔ)控制點(diǎn)的所有信息,邊集數(shù)組存儲(chǔ)邊的所有信息,則所有控制點(diǎn)間的觀測(cè)值和相關(guān)關(guān)系都通過邊集數(shù)組來反映,如表 2所示。

        表 2 測(cè)量控制網(wǎng)結(jié)構(gòu)體數(shù)組存儲(chǔ)結(jié)構(gòu)

        三、算法原理分析

        1.最小獨(dú)立閉合環(huán)搜索的概念

        最小獨(dú)立閉合環(huán)是指控制網(wǎng)中含有觀測(cè)邊數(shù)最少且相互獨(dú)立的多邊形閉合環(huán)。是對(duì)控制網(wǎng)進(jìn)行各種閉合差檢驗(yàn)、定位粗差的基礎(chǔ)幾何模型。如前所述,測(cè)量控制網(wǎng)可映射為圖 (網(wǎng))的數(shù)據(jù)結(jié)構(gòu)。則問題的核心即歸結(jié)為對(duì)網(wǎng)的結(jié)構(gòu)進(jìn)行的最小獨(dú)立閉合環(huán)的分析確定。其內(nèi)涵有二:①所搜索確定的閉合環(huán)最小,也即環(huán)的邊數(shù)最小,與網(wǎng)的“最短路徑”的概念一致;②各閉合環(huán)相互獨(dú)立,亦即每一個(gè)環(huán)中都至少有一條不屬于其他環(huán)的邊[2]。需要指出的是,對(duì)于一個(gè)網(wǎng)而言,其最小獨(dú)立閉合環(huán)的組合、構(gòu)成情況并不唯一,只要找出其中的一組即可滿足定位粗差及評(píng)定觀測(cè)值質(zhì)量的需要。

        2.生成樹、余樹變換算法的原理

        網(wǎng)的最小獨(dú)立閉合環(huán)搜索算法中以生成樹、余樹變換算法最為基礎(chǔ),且搜索結(jié)果穩(wěn)定[3]。該算法采用逆向思維,其原理是:首先對(duì)控制網(wǎng)進(jìn)行簡(jiǎn)化處理,將其“修剪”為一個(gè)稱為生成樹的樹形結(jié)構(gòu)。所謂生成樹就是一個(gè)連通圖的最小連通子圖,其特點(diǎn)是含有圖中的全部 n個(gè)頂點(diǎn),但只有足以構(gòu)成一棵樹的 n-1條邊,如果在生成樹上添加一條邊,則必定構(gòu)成一個(gè)環(huán),因其使得它所依附的兩個(gè)頂點(diǎn)之間有了第二條路徑。因?yàn)闇y(cè)量控制網(wǎng)中不存在孤立的控制點(diǎn),各點(diǎn)之間總是通過一定的觀測(cè)量、觀測(cè)邊發(fā)生著聯(lián)系,因此,對(duì)控制網(wǎng)而言,其總是一個(gè)連通網(wǎng),對(duì)應(yīng)的總是可以化簡(jiǎn)為一棵生成樹。如圖2所示。

        圖2 控制網(wǎng)數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化示意圖

        因此,對(duì)于一個(gè)網(wǎng),總可以通過一定的算法,將其分割為兩個(gè)部分,一是生成樹;二是生成樹的補(bǔ)集,稱為余樹,其中的每一條邊稱為余枝。將每一條余枝回代添加到生成樹上時(shí),即構(gòu)成一組閉合環(huán),取其中路徑最短者為該余枝對(duì)應(yīng)的閉合環(huán),則全部余枝分別回代即構(gòu)成一組獨(dú)立閉合環(huán),因?yàn)楦鶕?jù)“獨(dú)立”的定義,每個(gè)余枝對(duì)應(yīng)的閉合環(huán)均至少有一條邊(余枝本身)不屬于其他環(huán)。為保證各閉合環(huán)是最小環(huán),需要定義余枝添加到生成樹上的次序規(guī)則。

        1)嘗試將全部余枝添加到生成樹上,取其中閉合環(huán)路徑長(zhǎng)度最短者,優(yōu)先添加到生成樹上,作為當(dāng)前最小閉合環(huán);

        2)在生成樹的添加余枝后的當(dāng)前子圖上,嘗試將其余的余枝添加到當(dāng)前子圖上,取其中閉合環(huán)路徑長(zhǎng)度最短者,優(yōu)先添加到生成樹上,作為當(dāng)前最小閉合環(huán);

        3)重復(fù)以上過程,直到所有 r個(gè)余枝均添加到生成樹上,即得到一組 r個(gè)最小獨(dú)立閉合環(huán)。

        四、算法實(shí)現(xiàn)過程

        基于生成樹和余樹變換算法的實(shí)現(xiàn)過程,控制網(wǎng)采用點(diǎn)集數(shù)組 P[n]和邊集數(shù)組 L[m]的結(jié)構(gòu)存儲(chǔ)(均為結(jié)構(gòu)體數(shù)組)。

        1)采用BFS(寬度優(yōu)先遍歷)算法,得到控制網(wǎng)的一棵寬度生成樹,生成樹也采用點(diǎn)集數(shù)組、邊集數(shù)組存放,則生成樹的點(diǎn)集與控制網(wǎng)的點(diǎn)集相同,邊集為控制網(wǎng)邊集的子集,將控制網(wǎng)的邊集設(shè)為全集,則生成樹邊集的補(bǔ)集即為生成樹的余樹的邊集數(shù)組。編程中只要將 BFS遍歷經(jīng)過的邊的 V isited值標(biāo)定為 true,即表示生成樹,否則為 false表示余樹,此即實(shí)現(xiàn)了對(duì)控制網(wǎng)邊集數(shù)組的分割處理。

        2)將余樹中的余枝 (邊集數(shù)組 L[m]中 V isited值為 false的邊)逐一回代、添加到生成樹上(邊集數(shù)組L[m]中 V isited值為 true的邊),每添加一個(gè)余枝,得到一組閉合環(huán),通過網(wǎng)的最短路徑算法求得該余枝兩端點(diǎn)間的最短路徑,比較所有余枝的最短路徑,選擇最短路徑最小的余枝,優(yōu)先添加到生成樹上 (將其邊的Visited值標(biāo)定為 true)。

        3)重復(fù)2),直至所有的余枝都添加到生成樹上為止(邊集數(shù)組L[m]中所有邊的Visited值均為 true)。

        由上述過程可見,關(guān)鍵是基于邊集數(shù)組的最短路徑算法的實(shí)現(xiàn)。本文采用經(jīng)典的 Dijkstra算法,其實(shí)現(xiàn)過程是:定義兩個(gè)一維工作數(shù)組,一個(gè)是最短路徑長(zhǎng)度數(shù)組 PathLength[n],此數(shù)組與點(diǎn)集數(shù)組P[n]相互對(duì)應(yīng),用以存放起始點(diǎn) (余枝的一個(gè)端點(diǎn))到生成樹中各頂點(diǎn)的路徑長(zhǎng)度;另一個(gè)是最短路徑點(diǎn)名數(shù)組 PathName[n],用以存放起始點(diǎn)到其余各頂點(diǎn)的最短路徑的點(diǎn)序列。

        1)初始化 PathLength[n]和 PathName[n]數(shù)組:起始點(diǎn) S到其自身的邊長(zhǎng)為 0,與其不相鄰接的點(diǎn)的邊長(zhǎng)置為∞,與其相鄰接的點(diǎn),通過一個(gè)成員函數(shù) GetEdge(string PointA,string PointB),求出起始點(diǎn)到該點(diǎn)的邊的長(zhǎng)度,并在點(diǎn)集數(shù)組 P[n]中將起始點(diǎn) S的 Visited值標(biāo)定為 true,表示起始點(diǎn)即默認(rèn)為已知的最短路徑終點(diǎn)。

        2)掃描 PathLength[n]數(shù)組:查找該數(shù)組中當(dāng)前的最小值,凡是在點(diǎn)集數(shù)組 P[n]中 V isited值為true的點(diǎn),其對(duì)應(yīng)的在 PathLength[n]數(shù)組中的值均不予考慮,而在剩余的數(shù)組元素中查找最小值,并將其對(duì)應(yīng)的在點(diǎn)集數(shù)組 P[n]中的點(diǎn)的 Visited值標(biāo)定為 true,表示該點(diǎn)為自起始點(diǎn)出發(fā)的、當(dāng)前最短路徑的終點(diǎn),在 PathName[n]數(shù)組中記錄下該點(diǎn) T,并記錄當(dāng)前最短路徑值MinPath。

        3)更新 PathLength[n]和 PathName[n]數(shù)組:以 2)中得到的當(dāng)前最短路徑終點(diǎn) T作為新的參考點(diǎn),循環(huán)遍歷點(diǎn)集數(shù)組 P[n],查找計(jì)算 T點(diǎn)到達(dá)其他Visited值為 false的點(diǎn)的邊長(zhǎng) (P[n]中 Visited值為 true的點(diǎn)可視為已知最短路徑終點(diǎn)點(diǎn)集,不予考慮),如果遍歷的點(diǎn)與 T點(diǎn)相鄰接,并且MinPath與該點(diǎn)到 T點(diǎn)的邊長(zhǎng)之和小于其在 PathLength[n]中的該點(diǎn)到起始點(diǎn) S的路徑長(zhǎng)度,則用MinPath與該點(diǎn)到 T點(diǎn)的邊長(zhǎng)之和更新 PathLength[n]中該點(diǎn)到起始點(diǎn) S的當(dāng)前最短路徑長(zhǎng)度值。

        4)重復(fù)步驟 2)~步驟 3),直至點(diǎn)集數(shù)組P[n]中點(diǎn)的 V isited值全部為 true,即起始點(diǎn)到所有頂點(diǎn)的最短路徑均已查找得到,全部頂點(diǎn)均加入到已知最短路徑終點(diǎn)點(diǎn)集中為止。

        最后需要說明的是關(guān)于成員函數(shù) GetEdge (string Poin tA,string PointB),該成員函數(shù)的作用是分析網(wǎng)中各頂點(diǎn)是否相鄰及鄰接的邊長(zhǎng)值,用以代替鄰接矩陣。用此函數(shù)省卻了復(fù)雜的構(gòu)造鄰接矩陣的過程,并且避免了當(dāng)網(wǎng)的頂點(diǎn)較多時(shí),隨著鄰接矩陣的快速膨脹,需要大量占用內(nèi)存空間的問題。其實(shí)現(xiàn)過程為,通過遍歷邊集數(shù)組L[m],分析確定出各頂點(diǎn)相鄰與否及鄰接的邊長(zhǎng)值。對(duì)于無向圖,只要邊的起點(diǎn)和終點(diǎn)之間有一向相通即可視為相鄰,對(duì)有向圖,需要起點(diǎn)和終點(diǎn)之間雙向連通,才可視為相鄰。

        五、應(yīng)用及驗(yàn)證

        本文應(yīng)用上述原理,采用 C#語(yǔ)言進(jìn)行了編程實(shí)現(xiàn)。并采用幾個(gè)算例對(duì)算法的正確性進(jìn)行驗(yàn)證。

        圖3為某市三等水準(zhǔn)網(wǎng),對(duì)該水準(zhǔn)網(wǎng)進(jìn)行閉合環(huán)搜索計(jì)算,共計(jì)算得到水準(zhǔn)閉合環(huán) 23個(gè),與原水準(zhǔn)網(wǎng)中閉合環(huán)的實(shí)際情況完全一致;統(tǒng)計(jì)計(jì)算出的閉合環(huán)長(zhǎng)度、閉合差均與水準(zhǔn)網(wǎng)實(shí)際情況全部完全一致。采用其他幾個(gè)算例,同樣取得了準(zhǔn)確的搜索計(jì)算結(jié)果。

        圖3 算例

        六、結(jié)束語(yǔ)

        本文根據(jù)測(cè)量控制網(wǎng)的特點(diǎn),采用點(diǎn)集數(shù)組和邊集數(shù)組的存儲(chǔ)結(jié)構(gòu),實(shí)現(xiàn)了對(duì)網(wǎng)的最小獨(dú)立閉合環(huán)的自動(dòng)搜索。避免了使用大矩陣,占用大量存儲(chǔ)空間的問題產(chǎn)生,并且使得數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)更直觀、易于理解,便于數(shù)據(jù)的輸入存儲(chǔ)管理??蓱?yīng)用于實(shí)際生產(chǎn)及軟件設(shè)計(jì)中。

        [1] 趙一晗,伍吉倉(cāng).控制網(wǎng)閉合環(huán)搜索算法的探討[J].鐵道勘察,2006,32(3):12-14.

        [2] 王金嶺,李陸勛.控制網(wǎng)最小閉合環(huán)信息自動(dòng)生成算法[J].測(cè)繪通報(bào),1995(1):11-15.

        [3] 鄒進(jìn)貴,馮晨.控制網(wǎng)最小獨(dú)立閉合環(huán)搜索算法研究[J].地理空間信息,2008,6(6):97-99.

        [4] 馮琰,張正祿.最小獨(dú)立閉合環(huán)與附合導(dǎo)線的自動(dòng)生成算法 [J].武漢測(cè)繪科技大學(xué)學(xué)報(bào),1998,23(3):255-259.

        [5] 武漢測(cè)繪科技大學(xué).測(cè)量平差基礎(chǔ)[M].3版.北京:測(cè)繪出版社,1996.

        [6] WATSON K,NAGEL C,等.C#入門經(jīng)典[M].3版.北京:清華大學(xué)出版社,2007.

        [7] 嚴(yán)蔚敏.吳偉民,等.數(shù)據(jù)結(jié)構(gòu)[M].C語(yǔ)言版.北京:清華大學(xué)出版社,2007.

        Algorithm of Searching forM in imum Independent Closed-loop Based on Array of Edge Set

        YE Bao,CHEN Yi

        0494-0911(2010)12-0037-03

        P207

        B

        2009-12-10

        葉 寶(1977—),男,寧夏鹽池人,碩士生,研究方向?yàn)榇蟮販y(cè)量及測(cè)量數(shù)據(jù)處理。

        猜你喜歡
        鄰接矩陣數(shù)組搜索算法
        輪圖的平衡性
        JAVA稀疏矩陣算法
        改進(jìn)的和聲搜索算法求解凸二次規(guī)劃及線性規(guī)劃
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        基于鄰接矩陣變型的K分網(wǎng)絡(luò)社團(tuán)算法
        一種判定的無向圖連通性的快速Warshall算法
        尋找勾股數(shù)組的歷程
        基于汽車接力的潮流轉(zhuǎn)移快速搜索算法
        基于逐維改進(jìn)的自適應(yīng)步長(zhǎng)布谷鳥搜索算法
        Inverse of Adjacency Matrix of a Graph with Matrix Weights
        免费一级黄色大片久久久| 夫妻免费无码v看片| 亚洲国产aⅴ成人精品无吗| 天天躁狠狠躁狠狠躁夜夜躁| 亚洲AV成人无码国产一区二区| 国产内射视频在线播放| 日本女同视频一区二区三区| 一区二区三区国产免费视频| 未满十八勿入av网免费| 亚洲有码转帖| 欧美一级视频在线| 日本在线一区二区三区视频| 久久精品免费中文字幕| 亚洲 卡通 欧美 制服 中文| 激情偷乱人伦小说视频在线| 亚欧视频无码在线观看| 精品不卡视频在线网址| 亚洲国产精品美女久久| 亚洲av无码一区二区乱孑伦as| 成人动漫久久| 久久爱91精品国产一区| 久久久精品国产免费看| 男女性爽大片视频| 国产精品jizz在线观看老狼| 精品一区二区三区影片| 情头一男一女高冷男女| 国产精品偷窥熟女精品视频| 国产台湾无码av片在线观看| 久久精品一品道久久精品9| 女同久久精品国产99国产精| 亚洲va视频一区二区三区| 欧美人伦禁忌dvd放荡欲情 | 国产aⅴ无码专区亚洲av麻豆| 亚洲黄色电影| 男男互吃大丁视频网站| 日本视频在线观看二区| 中文天堂国产最新| 两个黑人大战嫩白金发美女| 国产亚洲亚洲精品视频| 日本高清一区二区三区在线观看| 公和我做好爽添厨房中文字幕|