分類 層級與編碼

2021-08-29 18:27:48 字數 1275 閱讀 2581

為參與計算,通常會對這些分類和層級進行編碼。常見的編碼分為兩類:一類是有限分類及層級,每層、每類的數量是有限的,比如常見的身份證編碼,中國大陸的居民身份證號碼由18位組成,前17位為數字,後一位多數人為數字,少數人為字母「x」;另外一類是無限分類及層級,比如計算機中常用的二叉樹。

在有限分類及層級中,預先知道物件集合的規模,比如身份證的前6位是行政區編碼,

110000    北京市

110100      市轄區

110101        東城區

這6位數分為三組,每兩位為一層,如果只用數字來表示的話,意味著在每一層可以畫出100個類別來,00-99。上面可以看到,北京市在省區的規劃中**是11,其中市轄區被記為01,也即1101,而東城區作為市轄區的下一級被記為01,也即110101。 這樣計算機讀取110101,展示給人們的就是北京市市轄區東城區,非直轄市的情況可以參考 -國家統計局 的 行政區劃 -r/l2sk 。與身份證類似,一些地理資訊系統,也是採用這種編碼的方式類記錄位址資訊到位址編碼的。

如果某一層出現第101個類別怎麼辦?

有兩種思路,一種是繼續使用有限分類及層級,擴充每一級上的編碼,比如上面的身份證編碼,如果出現101個類別,則在每一層又2位擴增到3位,問題得以解決,但無法向前相容,問題很大。

另外乙個思路時,如無無法估量物件集合的數量,或者數量是動態變化調整的,就需要用無限分類及層級。這種分類不去規劃每層的寬度和容量,而是扁平的設計成每層每個類別,只需記住自己的「父類」即可,這樣各找個家,也可以將乙個集合有機的串起來。

計算技術中的資料結構二叉樹就是這樣來設計,每層只知道parent是哪即可。同樣的,我們常見的論壇(bbs)在設計論壇、子論壇和帖子編號時,也是基於這樣的思路,因為無法估量某個論壇、子論壇到底會有多少個帖子。

boardid   parentboardid

threadid  boardid

子    父

孫    子

曾孫   孫

使用這種對應關係即可串起來。

無限分類與層級結構簡單,伸縮性極好,但也有不足,比如統計比較困難。比如在有限分類及層級中,只要按一定的分組就可以理出其下所有子類,如11開頭的身份證都是北京的,而使用無限分類及層級的話,需要檢索出所有parentid為11的記錄。在參與進一步的計算時,前者可能是一步,而後者需要兩步及以上才能完成。

宛如乙個持有**110101的人和乙個持有01**但直到其父是01的人同時站在面前,前者一看就知道其父、其祖,而後者只能回答其父,如果找其祖,需要使用後乙個01再檢索一次。

前者的優勢是每次所攜帶的資訊容量較大,但同時也耗費更多的空間,實現以空間換時間。

DOM層級順序與z index

dom層級順序,大概來說就是dom節點在z軸方向 垂直於螢幕向外的方向 的顯示優先順序。為了調整dom層級順序,我們想到的往往就是用css的z index屬性來控制。雖然看著很簡單,但是有時在使用時,我們有時也許會碰到一些一些奇奇怪怪的問題 其實看似簡單的層級順序它自己的一套規則,理解這些規則可以幫...

雜湊函式與層級結構資料

近兩天在溫習資料結構時,對雜湊函式與樹結構資料處理優化有些想法。首先看看雜湊函式的定義 在資料元素的關鍵字與該元素的儲存位置之間建立一種對應關係,將這種關係稱為雜湊函式 hash function 例如,雜湊表 hash table,也叫雜湊表 就是採用雜湊函式將元素資料對映成資料或鍊錶的儲存位置實...

csapp 記憶體層級與快取機制

半導體儲存器有 隨機訪問儲存器ram,斷點資訊會丟失。分為兩類 靜態sram,更快,用作快取記憶體儲存器cache 動態dram,用作主存及圖形系統的幀緩衝區。1 靜態ram sram 將每個位儲存在雙穩態 0與1 儲存單元裡 2 動態ram dram 3 增強的dram 同步動態儲存器sdram ...