Skip to main content

Tedshd's Dev note

Computer Science - 量子計算

# 量子計算 電腦所產生的假隨機數列看起來是雜亂的,但它仍是靠某種潛在的演算法計算出來,若知道序列產生的方式,就可以預測它,而它就不再是隨機.而唯一真正達到不可預測效果的,就是量子力學(quantum mechanics).它所產生的效應是隨機性的, Ex.我們無法預測某個鈾原子經過多久會蛻變成鉛.因此我們可以用蓋格計數器(Geiger counter)產生真正隨機的資料,這是通用電腦在原理上所無法辦到的. 量子力學在通用電腦這個議題上引發了一些尚無人能解的問題.初步看來,量子力學似乎和數位電腦非常契合,因為[量子]這個字眼所要表達的基本概念與[數位]是一致的.量子現象和數位的東西一樣,只存在於不連續的狀態中.從量子的觀點來看,物理世界中(外觀上)的連續,類比性質,只限於巨觀尺度下,肉眼所產生的幻覺,但在原子這樣的小尺度中卻不然.在原子的尺度中,幾乎所有的東西都是不連續的,所有現象都是數位的,帶電粒子可以帶數個電子,但無法帶半個電子.不幸的是,主控粒子間交互作用的法則是無法憑直覺得知. Ex.正常情況下,一樣東西無法同時存在於兩個地方,但在量子力學的世界裡卻非如此,因為在量子力學中根本沒有任何東西有其確定位置.一個次原子粒子其實是同時存在於所有地方的,只是我們比較可能會在某個地方觀測到它罷了.一搬來說,我們可以認定某個粒子就在我們所觀測的位置上,但綜合了觀測到的現象,令我們不得不承認它是同時存在於不同地方的.包括物理學家在內,幾乎所有人都覺得這概念難以理解. 目前尚未確認是否可以利用量子效應建構一部強大的電腦,但卻是可能的.原子似乎擅長計算一些特定的問題,如它們的結合方式,這在傳統電腦上很難計算, Ex.當2個氫原子和1個氧原子結合時,這些原子本身以某種方式計算出2個結合鍵之間的角度為107度,我們可以利用量子力學的觀念在數位電腦上算出近似值,但所花的時間會很長,而要得到精確的結果更是費日費時,但一杯水中的每個分子都在一瞬間完成這樣的計算. 電腦之所以要花這麼多時間計算這個量子力學的問題,是因為它必須考慮無限多種可能的水分子型態,才能得到答案.由於原子在組成分子時,可能立刻形成各種不同的組態,所以這樣的計算是必要的,這也就是為什麼數位電腦在有限的時間內只能得到近似值.若要解釋水分子何以能進行這樣的運算,我們想像它是同時嘗試所有可能的組態,就是利用平行處理(parallel processing). 也許可以利用量子中所謂的纏結(entanglement)現象來建構量子電腦.在量子力學系統中,兩個粒子交互作用之後,它們的命運會以某種方式結合在一起,與古典力學看到的截然不同,也就是當我們測量其中一者的某項特性時,也會對另一者的該項特性產生影響,即使兩個粒子實際上並未接觸.愛因斯坦稱這種在時間上沒有任何延遲的現象為超距幽靈效應(spooky action at a distance),他非常不認同世界會以這種方式運作. 量子電腦正是利用這種纏結效應-一個一位元量子暫存器不只能儲存一個0或1,而是可以儲存非常多的0和1,就好像原子可以存在許多地方一樣,一個位元也可以同時有許多狀態(0或1).不是處在0或1之間,因為每個疊置得0和1可以再量子電腦中與其他位元糾結在一起.若以兩個這種量子位元組合成一個量子邏輯區組,則它們的所有疊置狀態可以用不同的方式互動,產生更複雜的纏結組合,而一個利用量子邏輯區組完成的計算量非常龐大,甚至可能到無限多. 量子計算背後的理論已金建立了,但要真正實用仍有些困難.物理學家蕭爾(Peter Shor)最近發現一個利用這些量子效應的方法,至少,在理論上用它來計算因式分解這類重要且困難的計算,而他的成果也使量子電腦重新燃起一片生機,但眼前還有許多難題要去克服.其中一個問題在於,量子電腦中位元在運作時必須保持有秩序的糾結在一起,才能進行計算,然而即使是最細微的干擾,如宇宙射線或甚值處於真空中,都可能破壞纏結狀態.這種現象稱為脫散(decoherence),在量子電腦中,它等於阿契里斯的腳踝.蕭爾所提出的方法似乎僅限於可以利用一般化傅立葉轉換(generalized Fourier transform)這個快速運算方法求值的計算.而這類的問題可能在一般的杜林機就可以輕易的計算出來,若是這樣的話,蕭爾的量子計算只相當於傳統電腦中的某些程式. 若量子電腦可以同時在無限多個可能做搜尋,則它的本質就勝過傳統的計算設備. ...

logdown Tab test

# Tab problem ## Problem Mac 的 function 中 console.log(‘hihi’) 是按一次 Tab 有 4 個空白 but alert(‘hihi’) 這一行在按 Tab 縮排就有問題,再接續上一行按 enter 下來之後縮排剩 2 個空白,之後再按 Tab 縮排會變成只有 2 個空白 在 fun2 的 function 中都是直接按 4 個空白鍵來作縮排,都正常 ## 發生現象 在按 Tab 縮排過,打完那一行直接按 enter 到下一行,縮排就從 4 個空白變成 2個空白 ## 期望 希望用 Tab 時在 Edit 和 Preview(最終結果)的結果是一樣的 var Mac = function() { console.log('hihi'); if (!console) { alert('hihi'); } } var fun function() { console. ...

JavaScript type

# JavaScript Type number string boolean null undefind 減少 type 轉換以加快執行速度 # Object ## var 宣告後即擁有物件的屬性 宣告之後無法刪除 區域變數 function 內宣告 全域變數 小心使用 ## property 建立在物件中 可刪除 # Array method 1 var arr = new Array(); bug var arr = new Array(10); arr // [undefined × 10] method 2 var arr = []; ...

gitconfig

# gitconfig Mac gitconfig path ~/.gitconfig [user] name = tedshd email = tedshd@gmail.com [alias] st = status co = checkout br = branch d = difftool [color] diff = auto status = auto branch = auto ui = auto [credential] helper = osxkeychain [push] default = simple [core] editor = vim [diff] tool = vimdiff [difftool] prompt = false vim diff git d terminal git diff ...

CSS attribute

# CSS attribute ## 顏色與背景 color: background-color: background-images: background-repeat: no-repeat repeat-x repeat-y repeat background-position: center background-attachment: fixed scroll; background: url() left center no-repeat; ## 文字 text-align: left right center vertical-align: top bottom text-top text-bottom middle baseline super sub line-height: letter-spacing: (字距) word-spacing: (單字間距) text-indent: (首行縮排) font-family: font-size: font-weight: 100~900 font-style: italic oblique text-decoration: underline overline line-through none text-decoration: blink 文字閃爍(部分瀏覽器有用) text-decoration: line-through 刪除線 text-decoration: overline 文字頂部加線 text-decoration: underline 文字底部加線 text-decoration: none 沒有改變 ## 區塊 margin: padding: border-color: transparent border-width: border-style: solid double dotted dashed inset outset groove ridge width: height: vertical-align: middle ## 編排與顯示 float:left right clear:left right both position:relative absolute fixed top: left: right: bottom: z-index: display: block inline-block none inline visibility: hidden visible overflow: hidden scroll auto ## 條列項目 list-style: none disc square ## 其他 cursor: pointer crosshair wait help text move ## 虛擬樣式 :link 當文字或圖案是連結時 :hover 當滑鼠指標移到連結文字或圖案 :avctive 當滑鼠按下連結文字或圖案 :visited 當連結已經點過時 :focus focus :before { content: ""; } :after { content: ""; } ...

CSS Note

# Tip about CSS ## clearfix 為了清除浮動 .clearfix { *zoom: 1; } .clearfix:after { display: table; content: ""; line-height: 0; clear: both; } ## padding-right or bottom & margin-right or bottom 如遇 model box 問題盡可能在右或下做修正(因為 XY 是朝右下發展) 避免用到 top 盡量用 bottom ## scroll bar 在 windows 中,scroll bar 的寬是 16px ## a & img 在用 a 包覆 img 時會發現一個現象就是就算把 a 用 block 設定寬高設成跟 img 一樣還是會發現滑鼠在要從圖片下面移進圖片會發現進去前會有約 2px 的空白滑鼠就先變成有連結的狀態,經過詢問後發現是因為 img 的關係,img 本身會有一點高度在bottom,所以如果要去掉這高度有一些作法 ...

HTML Design Pattern

# HTML Design Pattern ## 語意化(影響 SEO) ## 去 CSS 還可維持可讀性 ## 去 JavaScript 頁面還能 work -> 現在較不適用 ## 避免樣式標籤 <!-- not recommended --> <b></b> <i></i> <!-- use --> <strong></strong> <em></em> ## 避免將 style 寫在 HTML tag 上 ## 善用標籤以維持可讀性與語意化 ## 網頁上的載入圖片做適當的選擇 會變動的圖片以 <img src=""> 呈現 幾乎不會變動或重要性要低的圖片適合以 background 呈現 適當的利用 CSS sprite ...

Vim

# Vim More a 輸入文字 i 插入字元 o 新增一行 :wq 儲存後離開 :w 儲存 :q 離開 :q! 離開不存檔 :w! 儲存 readonly Esc 離開編輯模式 h 左 j 下 k 上 l 右 v 選擇 yy 複製整行 nyy 複製n行 yw 複製游標到單字結束 nyw 複製游標到n個單字結束 p 貼上 d + <- 刪除游標前一個字元 d + -> 刪除游標後一個字元 d + up 刪除游標所在和前一行 d + down 刪除游標所在和後一行 dd 刪除游標所在那一行 dw 游標停在某字第一個刪此字 停在字中刪後面的字 x 刪除游標所在字元 X 刪除游標所在前一個字元 nx 刪除游標所在n個字元 ...