




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、中國礦業(yè)大學全校通識選修課數(shù)學建模與算法設計課程論文題目:對火車站身份證號碼校核的分析成績:評閱人:姓名 學院 化工學院 班級 能源化學工程14-1 學號 我的郵箱是:ziqiang_xu時間:摘要計算機在生活中扮演著越來越重要的角色,并且已經(jīng)為人類的進步做出過巨大貢獻。比如航空航天、軍事、天氣預測、工程模擬等等諸多領域。計算機作為高速計算模擬設備,除了需要先進的硬件制造工藝之外,還需要優(yōu)秀的軟件的配合。而軟件的核心是算法,高性能的算法才能合理的調(diào)動有效的資源。老師在上課的時候講了一個關(guān)于火車站身份證核查的問題,我覺得有更好的方法來進行查詢。并且估計目前所采用的正是這樣的方法。中國居民身份證號
2、碼是中國公民的識別碼,居民身份證是國家法定的證明個人身份的證件。中國的人口規(guī)模大概是十四億。關(guān)鍵詞:算法;查詢;身份證號碼;分段;結(jié)構(gòu);地址碼;出生日期碼;順序碼;校驗碼;模擬;python;C語言;計算機;火車站。正文1、 問題描述:在火車站,為了掌握乘客的真實信息,工作人員需要對乘客的身份進行核查,一般是對身份證進行核查,并使用儀器進行掃描識別。需要讀取身份證號碼,并從身份證數(shù)據(jù)庫里獲取照片和更加詳細的信息。中國有近十四億人口,如果逐一進行比對查詢,將會有一個十分龐大的計算量產(chǎn)生。試分析使用枚舉比對方法,并指出它的弊端,并提出一個更好的核對辦法。2、 問題分析與解決方案:(1)枚舉法:大家
3、都十分熟悉,在進行身份證掃描的時候,是一個識別終端讀取身份證信息,然后傳到工作人員的電腦里;再上傳到國家的身份證服務站,服務站反饋乘客的信息,如是否存在此條數(shù)據(jù)以及乘客照片;工作人員再進一步進行核實。(考慮到信息安全,全國公民的信息被完全下載在本地電腦的可能性非常低)對十四億組數(shù)據(jù)進行逐一比對的方法是簡單的,但是絕對是不可取的。這種方法對計算機資源占用太大。根據(jù)概率論的知識,x表示核查一個人的身份證號碼需要進行的數(shù)據(jù)比對的次數(shù),則x的期望E(x)=7億。為了進行進一步的驗證7億次查詢的計算量的巨大,由于不會使用c語言,我使用python語言對查詢過程進行模擬。先隨機產(chǎn)生7000萬條數(shù)據(jù)(由于p
4、ython語言的設計,一個元組不能容納7億條數(shù)據(jù),故此處只生成了7000萬條數(shù)據(jù),并執(zhí)行十次用以模擬對七億條數(shù)據(jù)進行檢索比對。)python是解釋性的腳本編程語言,在性能上弱于C語言,但是單純從打印性能上有數(shù)據(jù)表明大約是2比3的比例,參考地址見參考文獻: 預測C語言和Python在檢索的性能上比值不會超過3倍,以此由圖2的運行結(jié)果看可以得出一個粗略估計的檢索比對耗時:以當前硬件配置(如圖3)進行檢索查詢的話,至少會耗費大約70秒的時間。 考慮到實際情況下數(shù)據(jù)的處理是在云端進行,故云端計算機的性能是咱們普通PC不可比擬的,進行一次數(shù)據(jù)檢索的時間必定會大大減少。這是不可否認的,但是還應該充分考慮到
5、:同一時間線上會有多個查詢請求并行發(fā)生,即全國各地都在進行著身份證的校核。這又會進一步增加這一算法的的復雜度,就算云端服務器的性能十分強勁,也是有很大的壓力的,很有可能會對其他業(yè)務造成干擾,甚至導致宕機這樣的重大事故發(fā)生。源代碼圖片(圖1)運行結(jié)果(圖2)計算機配置截圖(圖3)(2) 分段檢索法:要高效率地對身份證號碼進行檢索校核,必須要深入了解身份證號碼的規(guī)律。通過查詢百度百科,可以了解到:居民身份證號碼,根據(jù)中華人民共和國國家標準 GB 11643-1999中有關(guān)公民身份號碼的規(guī)定,公民身份號碼是特征組合碼,由十七位數(shù)字本體碼和一位數(shù)字校驗碼組成。排列順序從左至右依次為:六位數(shù)字地址碼,八
6、位數(shù)字出生日期碼,三位數(shù)字順序碼和一位數(shù)字校驗碼。 居民身份證是國家法定的證明公民個人身份的有效證件。關(guān)于地址碼:第一、二位表示?。ㄗ灾螀^(qū)、直轄市、特別行政區(qū));第三、四位表示市(地級市、自治州、盟及國家直轄市所屬市轄區(qū)和縣的匯總碼)。其中,01-20,51-70表示省直轄市;21-50表示地區(qū)(自治州、盟);第五、六位表示縣(市轄區(qū)、縣級市、旗)。01-18表示市轄區(qū)或地區(qū)(自治州、盟)轄縣級市;21-80表示縣(旗);81-99表示省直轄縣級市。關(guān)于出生日期碼:(身份證號碼第七位到第十四位)表示編碼對象出生的年、月、日,其中年份用四位數(shù)字表示,年、月、日之間不用分隔符。例如:1981年05
7、月11日就用19810511表示。關(guān)于順序碼:(身份證號碼第十五位到十七位)地址碼所標識的區(qū)域范圍內(nèi),對同年、月、日出生的人員編定的順序號。其中第十七位奇數(shù)分給男性,偶數(shù)分給女性。關(guān)于校驗碼: 作為尾號的校驗碼,是由號碼編制單位按統(tǒng)一的公式計算出來的,如果某人的尾號是0-9,都不會出現(xiàn)X,但如果尾號是10,那么就得用X來代替,因為如果用10做尾號,那么此人的身份證就變成了19位,而19位的號碼違反了國家標準,并且中國的計算機應用系統(tǒng)也不承認19位的身份證號碼。是羅馬數(shù)字的10,用X來代替10,可以保證公民的身份證符合國家標準?,F(xiàn)在假設工作人員通過設備獲取了一位乘客的身份證號碼為: 500382
8、 19970116 465 81 地址碼(前六位):500382 重慶市合川區(qū)(155萬人口,2013年數(shù)據(jù))2 出生日期碼(7-14位): 1997年01月16日3 順序碼(15-17位): 4654 校驗碼(最后一位): 8此處的分段檢索法是在枚舉法的基礎上進行改進的,在枚舉法之前進行幾步操作,分層進行檢索,逐步地縮小檢索范圍。在服務器的數(shù)據(jù)庫里,如果單方面地從查找速度上考慮的話,為身份證信息加入合適的層級,比如性別,校驗碼等,可以進一步地提高查找速度。即咱們經(jīng)常聽說的樹狀結(jié)構(gòu),有多個層級,對信息進行有條理的分類。示意圖如圖4所示:圖4第一步:根據(jù)前六位號碼先確定了地址,如戶籍所在地是重慶
9、市合川區(qū)。檢索地址碼耗時,如果不進行分層處理大約幾萬條,一萬條數(shù)據(jù)在我的電腦上的運算耗時是6微秒,幾乎可以忽略不計。第二步:即使不再繼續(xù)縮小范圍而是直接進行檢索,枚舉150萬條信息,(普通的區(qū)縣是沒有這么多人口的,有這么多人口是少數(shù)情況,故在普通狀況下檢索量會更小一些)在與之前一樣的硬件條件下耗時約0.133秒,如圖5所示。這與之前的70秒相比較,是一個非常大的提升,極大地提高了查找效率,如果更進一步進行更加嚴密的分類,即使是一般的手持設備也能勝任這項任務。150萬條數(shù)據(jù)檢索模擬結(jié)果(圖5)3、 結(jié)論: 更優(yōu)的計算機算法能夠更加節(jié)省計算機硬件資源,更加高效地為我們工作。研究算法不是誰的專利,就
10、算作為一個非專業(yè)研究算法的人,對一些算法進行學習和研究是很有益處的。在現(xiàn)實生活中,一些算法問題的有效解決也將節(jié)約大量的資源。所以研究算法是十分有必要的,在此,向算法研究者致敬,我將努力在我所在的領域做出成績,并在需要的時候,向算法研究者尋求幫助,也將做出有效的反饋供研究者更好地進行分析。參考文獻:1、 Python和C語言打印性能對比:2、重慶市合川區(qū)人口數(shù)據(jù)來源:【注:關(guān)于身份證的相關(guān)標準是由網(wǎng)絡上的資料整理所得,Python和C語言的性能對比也是引用了網(wǎng)友的帖子,并沒有進行嚴格的測試?!俊靖剑篜ython數(shù)據(jù)查詢模擬代碼身份證號碼樣本:一個虛假身份證號和隨機數(shù)進行加和運算得來程序一(可自由
11、輸入不不大于7000萬的枚舉條數(shù),主要用于測試小查詢量耗時):from time import *from random import *list_7000=x=int(input('輸入模擬的數(shù)據(jù)枚舉條數(shù)n')num=0for i in range(n): h=int(100000*random() list_7000.append(x+h)start=time()print(str(start)+'n')for i in list_7000: if i num=num+1pri
12、nt('已經(jīng)找到'+str(num)+'個n')endtime=time()print(str(endtime)+'n')print('總共耗時'+str(endtime-start)+'秒')程序二(模擬7億次數(shù)據(jù)查詢):from time import *from random import *list_7000=xum=0for i in range(70000000): h=int(100000*random() list_7000.append(x+h)start=time()print(str(start)for j i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高三英語聽力訓練第一學期計劃
- 辦公室裝修工程重點難點分析及應對措施
- 軟件開發(fā)售后服務崗位職責
- 二年級數(shù)學下冊線上線下混合教學計劃
- 部編版二年級語文下冊第一單元聽說訓練計劃
- 新人教版四年級數(shù)學下冊課堂管理計劃
- 光電信息應用專業(yè)畢業(yè)實習報告范文
- 部編版一年級語文與班風建設計劃
- 以影為筆繪傳統(tǒng)之魂:畫意攝影中中國傳統(tǒng)文化符號的呈現(xiàn)與傳承
- 以廢治污:化學強化污泥制取聚氯化鋁凈水劑的創(chuàng)新路徑與實踐
- 特應性皮炎的診斷與治療課件
- 社會學概論全套PPT完整教學課件
- 2016-2023年浙江新高考英語讀后續(xù)寫試題真題及范文賞析
- 2023數(shù)學建模國賽A題優(yōu)秀
- 山西省貫徹《二手車流通管理辦法》實施細則
- GB/T 18362-2008直燃型溴化鋰吸收式冷(溫)水機組
- 社區(qū)工作者經(jīng)典備考題庫(必背300題)
- 2023年陜西韓城象山中學高一物理第二學期期末聯(lián)考試題(含答案解析)
- 年產(chǎn)10萬噸污水處理藥劑菌劑項目環(huán)評報告書
- 腎上腺常見疾病影像診斷課件
- 倉庫組長崗位說明書
評論
0/150
提交評論