跳轉到內容

演算法/貢獻者指南

來自華夏公益教科書

系列簡介

[編輯 | 編輯原始碼]

本書是關於資料結構和演算法的三本教科書系列的一部分

  • 資料結構—適合作為資料結構入門課程的書籍,介紹了最常見的資料抽象及其構造和屬性。關於關鍵點的教程。
  • 演算法—適合作為演算法入門課程的書籍,介紹了最常見的演算法技巧以及如何分析演算法。假設對資料結構有一定了解。關於關鍵點的教程。
  • 高階資料結構和演算法—涵蓋更高階內容的書籍,假設對資料結構和演算法有一定了解。前兩本書是教程,而這本書更多的是參考性質的。因此,它的內容可以更加多元化。不屬於前兩本書教程性質的更高階(和有趣)的內容應該放在這本書裡。

這些書籍之所以組成一個系列,是為了幫助縮小它們的範圍並協調工作。最終目標是為每個計算機科學主題提供書籍。

  1. 如果您想修復錯誤,只需點選“編輯”,進行修改,然後點選儲存。我們會稽核這些修改,確保它們適合本書。如果您不確定,可以訪問“討論”頁面並提出疑問。一般來說,要進行小的更改,不需要先詢問,你可以使用常識來判斷你的更改是否合適。
  2. 如果您想編寫章節、部分或部分章節,請檢視標記為“TODO”標籤的專案並從那裡開始。
  3. 請務必先閱讀本書的所有其他章節,以避免內容重複。
  4. 編寫章節時,您可以將某些部分標記為“[TODO: 解釋]”,其中 解釋 描述了您希望在該部分發生的內容。例如,如果您不擅長製作影像,您可以將影像的描述作為 TODO 專案。也許擅長製作影像的人會注意到這一點併為您提供一個。TODO 專案的目的是給出要寫什麼內容的計劃。
  5. 這是一個教程:我們不是要建立包含所有已建立演算法的百科全書,也不是要展示特定演算法的絕對最佳版本。
  6. 不要在書籍章節中包含指向維基百科文章的連結:我們的想法是讓每一本書都自成一體,這樣讀者就可以打印出書籍並單獨閱讀,而不必線上瀏覽。
  7. 本書使用一種虛擬碼語言,對於熟悉 Algol 家族語言(包括 C、Java、Pascal 和 Python)的人來說應該足夠熟悉。它包含一些額外的功能,有助於抽象掉瑣碎的實現細節,從而可以傳達真正的演算法思想,而不是專注於依賴於語言的瑣碎實現問題。
  8. 非虛擬碼的實現可以在附錄中編寫。這些實現可以供讀者使用,並可以消除任何可能的歧義。實現應該經過充分測試幷包含測試用例。實現語言為 Python、C、Java 和 Scheme。
  9. 如果該部分呈現的材料對於理解章節的整體要點來說並不重要,則在章節或小節標題旁邊加一個星號(“*”)。(例如,更初級的讀者可以選擇跳過或略讀這些章節。)
  10. 儘可能使用原始來源。如果您確實使用了參考資料,請將其放在參考資料部分。未經許可不得複製內容。此外,請注意,即使一些 GFDL 內容使用不同的許可版本(並非所有內容都向前相容),也應未經許可不得複製。
  11. 將維基百科用作材料的另一個來源,但編輯材料以僅呈現主要要點和想法:維基百科的百科全書式細節在試圖學習基本概念時會分散注意力。
  12. 對於一些短語,可以使用數學上的“我們”這種尊稱,但儘可能使用第二人稱“你”:這使得句子更容易構建,而且聽起來也更直接。
  13. 尋找對理解演算法或軟體工程流程中某個部分的見解。
  14. 避免使用被動語態(“這篇文章是我們寫的。”)。相反,嘗試使用主動語態(“我們寫了這篇文章。”)。
  15. 不要使用“this”作為代詞,只將其用作形容詞。

開發階段

[編輯 | 編輯原始碼]
  1. 應該建立並大體上達成共識的目錄。這樣的目錄將為本書的範圍設定一個基準。當然,以後可以進行更改。(截至 2005 年 5 月 28 日,已開發 100% 已完成:目錄大體上已得到貢獻者的認可)
  2. 在章節劃分之後,應該設計好章節和部分,使用 TODO 專案來描述要在該部分放置的內容。(截至 2005 年 5 月 28 日,已開發 100% 已完成
  3. 應該首先編寫最重要的概念,以便為其他材料的構建提供一個錨點和上下文。(截至 2005 年 5 月 28 日,已開發 50% 正在進行中:加入我們!)
  4. 實現演算法的 C、Java、Python 和 Scheme 版本並將其放在附錄中。(截至 2005 年 5 月 28 日,已開發 0% 仍然 TODO...)
  5. 類似於開源專案,應該新增越來越多的“功能”(即章節和部分)。此階段將在完成第一版里程碑後進行。但是,在對第二版進行改進時,不應忽視核心專案。(截至 2005 年 5 月 28 日,已開發 0% 仍然 TODO...)

編寫書籍需要時間和奉獻精神,但如果您已經走到了這一步,它很可能是值得的。正如免費軟體程式不會從樹上掉下來一樣,完整的開放書籍也不會自己寫出來。

華夏公益教科書