原创 變分法與最速降線問題

本文主要參考變分法及其應用. 在諸多優化問題中,優化的變量是一個函數,也就是說需要找到一個函數,使得某個特定的目標最小。 固體力學中的最小勢能原理 處於平衡狀態的彈性體,真實位移場使得系統總勢能取最小值。 基於勢能原理,也發展

原创 SVM學習筆記

Support Vecot Mechine, SVM 學習筆記 SVM一般翻譯爲支持向量機,最初在文本分類領域展露頭角,後成爲機器學習的主流技術,其求解較神經網絡一般要高效,最初只適用於二類劃分。理論上來說,通過one-vs-al

原创 二次型對自變量向量的導數

將形如f=xTAxf=\boldsymbol{x^TAx}f=xTAx稱爲二次型,其中x\boldsymbol xx是nnn維列向量,A\boldsymbol AA爲n×nn\times nn×n的矩陣,fff爲標量。二次型由於其良好

原创 動態規劃之揹包問題

1. 一維揹包問題 0-1揹包問題 給定一個載重量爲CCC的揹包,有nnn個物品,每個物品的重量爲wiw_{i}wi​,每個物品的價值爲viv_{i}vi​,如何往揹包中裝物品使得揹包中的總價值最大化。 max  V=Σvixis.

原创 動態規劃思想

1. 動態規劃與分治 動態規劃(Dynamic Programming, DP)方法常常被用來尋找最優解。類似於分治策略,將原問題分解爲子問題,然後對子問題進行求解,再子問題的解綜合得到原問題的解。但是用遞歸的算法實現分治策略時,往往

原创 排序方法

一維數組的排序算法使用的場合很多,在許多面試中也經常被問到(雖然我還沒有被問到過)。排序算法主要有插入排序、冒泡排序、歸併排序和快速排序。下面介紹的算法均按升序排序。 排序算法還有穩定性的問題,穩定的排序算法指的是原無序數組中相同元

原创 VSCode編譯、調試Python(Python in VSCode)

VSCode是微軟開發的輕量級編輯器,加裝擴展程序後,可以用來編譯、調試程序,十分方便. VScode 個人覺得VSCode的優點主要有: 輕量級,相較於VS Studio,VSCode要小地多 跨平臺,VSCode在Windows

原创 最大值隊列、最大值棧

要求實現一個隊列或棧,並且在O(1)的時間內,完成pop()、push()和max()的操作。 1 最大值隊列 《劍指Offer》面試題59 用一個正常的隊列實現數據的插入和刪除,滿足FIFO的關係。用一個雙向隊列保存當前隊列中的

原创 二分查找及其變式

對於在有序的向量可以使用二分查找的方法,在log(n)log(n)log(n)的時間複雜度內完成查找。應當指出二分查找必須基於“有序”的前提條件。 1 基本程序實現 在一個數組中,查找一個數字的基本程序如下所示。 int binary

原创 虛函數與純虛函數

1 虛函數 C++中的虛函數是實現運行多態的重要工具。關鍵字爲virtual。 下面程序中定義了基類Base和派生類Deriv,派生類中有與基類中的同名函數print().如果定義一個基類指針,但是將其指向派生類對象。那麼將指針的類型

原创 const關鍵字與指針

const是C/C++中定義常量的關鍵字,有利提高代碼的魯棒性和可讀性。const經常與指針一起使用,有指針指向的內容爲常量和指針本身爲常量兩種,容易引起混淆。 指針指向的內容不變 #include <iostream> using na

原创 劃分(partition)算法

quicksort中的快速劃分 快速排序quicksort的核心是對無序向量進行快速劃分,選取一個元素作爲軸點(pivot)對向量進行劃分,確保比軸點大的元素在軸點之後,比軸點小的元素在軸點之前,將原向量劃分爲兩個子向量。 算法思想:

原创 c++ make_heap(), pop_heap()函數

c++中的make_heap(), pop_heap()的頭文件爲algorithm。作用與priority_queue中的成員函數相同,可以單獨使用。 使用方法 make_heap 在容器範圍內,就地建堆,保證最大值在所給範圍的最前面

原创 如何判斷整數是否是2、3、4的乘方(冪)

在LeetCode 342. Power of Four和LeeCode 326. Power of Three中有關於如何判斷整數是否是4或者是3的乘方問題,並且不用循環和遞歸。 如果使用循環或者遞歸可以很容易地通過不斷地除以基數進行判

原创 C/C++整型上下限INT_MAX INT_MIN及其運算

C中常量INT_MAX和INT_MIN分別表示最大、最小整數,定義在頭文件limits.h中。1. INT_MAX,INT_MIN數值大小因爲int佔4字節32位,根據二進制編碼的規則,INT_MAX = 2^31-1,INT_MIN=