二进制法表示集合
將一個集合與一個二進制數對應,再將二進制數與十進制數對應。為了方便操作,單詞的編號也可以從1…N,改成0…N-1。比如:集合[1,4,5]->集合[0,3,4]->11001(2)->2^0+2^3+2^4=25。這樣操作不但節省了空間,而且在進行集合操作時可以用位操作,又節省了時間。
簡單說就是把集合用一個數表示:
[1,4,5]就表示為25,25就是集合[1,4,5].
為什么呢?
25表示成二進制是11001,第1,4,5位是1,就說明集合中含有1,4,5這三個數,其余位是0,則表示集合中不含其它數。
這樣表示對嗎?
答案是肯定的。因為,對于一個集合,任意一個數只有兩個狀態,屬于or不屬于,0表示不屬于,1表示屬于,完全可以。
再就幾個例子:
集合[2,4],可表示為1010,轉化為十進制就是10,然后10就可表示集合[2,4];
集合[1,2,5,7],可表示為1010011,轉化為十進制是83,83就表示集合[1,2,5,7];
數23,變為二進制是10111,對應的集合就是[1,2,3,5];
這樣一個數就可以表示一個集合了,簡潔明了,還可以進行位運算。但有限制,集合里的數不能太大,若是有個100000,你就需要2^(100000-1)這么大的數存了。那就得不償失了。
總結
- 上一篇: NLP自然语言处理
- 下一篇: C#实现IVR(基于东进的语音卡)-5