C/C++ 開源算法庫


本文收集各種 C 和 C++ 優質的科學計算算法開源代碼庫。數值優化的世界,這些算法庫功能強大、快速、高效、優雅,拿去比較普通人編寫的算法代碼,會發現自己的代碼卑賤的如同草芥螻蟻一般。

1. GSL

GNU Scientific Library (GSL) 是一個用於科學計算的C/C ++ 語言類庫。有超過1000個函數,算是比較全面。不過在某些方面還有不足,比如優化沒有遺傳算法,粒子群算法等,積分性能不如cuba。

函數包括:

  • 復數
  • 多項式的根
  • 特殊功能
  • 向量和矩陣
  • 排列
  • 排序
  • BLAS支持
  • 線性代數
  • 特征系統
  • 快速傅立葉變換
  • 正交
  • 隨機數
  • 擬隨機序列
  • 隨機分布
  • 統計數據
  • 直方圖
  • n元組
  • 蒙特卡洛積分
  • 模擬退火
  • 微分方程
  • 插補
  • 數值微分
  • 切比雪夫逼近
  • 系列加速
  • 離散漢克爾變換
  • 尋根
  • 最小化
  • 最小二乘擬合
  • 物理常數
  • IEEE浮點數
  • 離散小波變換
  • 基礎樣條
  • 運行統計
  • 稀疏矩陣和線性代數

2. Cuba

Cuba提供四種積分方法庫,包含三種蒙特卡洛積分和一種精確積分。這幾個方法的性能要好於GSL中提供的蒙特卡洛積分。

3. Boost

Boost 是為 C++ 語言標准庫提供擴展的一些 C++ 程序庫的總稱。其中也包含了和科學計算有關的庫。

數學和數字庫包括:

4. Eigen

Eigen 是一個線性算術的C++模板庫,包括:線性代數、矩陣、矢量運算、數值分析以及相關算法。功能強大、快速、優雅以及支持多平台。

5. MTL

Matrix Template Library(MTL)專注於線性代數相關的計算任務,如各種形式矩陣的生成(對角,共軛,稀疏,對稱等),相關的計算,變換,以及與一維向量的運算。

6. FFTW

FFTW 是一個C語言的快速傅立葉變換庫。它包括復雜的,真實,對稱的,多層面的,和並行轉換,並且可以處理任意大小的efficiently.It陣列通常比其他免費提供的FFT實現更快,更與供應商的調整庫(基准可在網頁查閱)競爭。為了實現這一性能,它使用新的代碼生成和運行時的自我優化技術(以及許多其他的技巧)。

7. GAlib

GAlib遺傳算法庫,包含四種遺傳算法,GAListGenome 鏈表形、GATreeGenome 樹形、GAArrayGenome 數組形、GABinaryString 二進制串形。

8. libGeneiAL

libGeneiAL可擴展遺傳算法庫。它提供了一個框架,可通過使用自定義適應度函數在生成過程中最大化種群中染色體的適應度值來解決優化問題。該庫為用戶提供了高度的靈活性和可擴展性,同時還為核心功能提供了良好的可擴展性。

9. libfgen

libfgen是一個實現高效且可自定義的遺傳算法(GA)的庫。它還提供了粒子群優化(PSO)功能和用於實值函數最小化或模型擬合的接口。它是用C編寫的,但是也可以使用C ++編譯器進行編譯。

特征

  • 人口數量固定,可快速高效地實施通用Analytics(分析)。
  • 具有多種選擇,變異和交叉類型的可定制GA。
  • 應用程序可以提供自定義的種子,變異和交叉運算符。
  • 線程安全的,可以將多個線程用於適應度計算或並發遺傳算法的群島。
  • 具有類似於GA的API的粒子群優化算法。
  • 使用GA或PSO的高級易用模型擬合和功能最小化界面。
  • 在真實數據集上進行了測試(系外行星的軌道與恆星徑向速度數據的擬合)。
  • 使用提供的文檔清除HTML(html)。
  • 提供了命令行和圖形示例程序。
  • 例子包括旅行商問題,線性遺傳規划和紋理壓縮。

10. C++ Wavelet Libraries

C++ Wavelet Libraries是C ++小波變換算法庫專注於速度和易用性。

可用功能包括

  • 一維DWT和IDWT實現(兩種模式)
  • 2DWT和IDWT的實現(兩種模式)
  • 一維SWT和ISWT實現(固定小波變換)
  • 2D SWT實施
  • 使用FFTW3庫實現

11. KFilter

KFilter卡爾曼濾波器的開源算法庫。提供了可配置的模板類。子類允許為過濾器定義不同的矩陣內容。卡爾曼濾波器在航空,機器人視覺和機器人技術中已經使用了一段時間。估計狀態向量並通過使用從傳感器獲取的度量來校正估計是有用的。它的主要用途是用於跟蹤或數據融合。

12. Dlib

Dlib主要為深度學習服務的算法庫,包含深度學習相關的優化算法,也包含一些圖形圖像處理,主要為深度學習的實現服務。被廣泛的用在行業和學術領域,包括機器人,嵌入式設備,移動電話和大型高性能計算環境。

13. MRPT

Mobile Robot Programming Toolkit (MRPT)機器人編程算法庫,主要是機器人相關的定位,計算機視覺圖像處理,運動規划相關的算法。

14. Algorithms - C++

Algorithms - C++算法涵蓋了計算機科學,數學和統計學,數據科學,機器學習,工程等多個主題。

回溯

位操作

密碼

數據結構

動態編程

幾何學

圖形

圖形學

貪婪算法

散列

線性代數

機器學習

數學

數值方法

數據結構操作

其他

可能性

范圍查詢

搜索

排序

字符串

參考鏈接:C/C++ 開源算法庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM