一区二区日本_久久久久久久国产精品_无码国模国产在线观看_久久99深爱久久99精品_亚洲一区二区三区四区五区午夜_日本在线观看一区二区

C知道精選 換一換
如果有外碼,定義各基本表外碼。
### 如何在數據庫中定義包含外碼的基本表 在外鍵存在的場景下,定義基本表的外鍵關系是為了確保兩個表之間的數據一致性和參照完整性。以下是關于如何定義外鍵關系的具體說明: #### 定義外鍵的基本語法 外鍵可以通過 `ALTER TABLE` 或者創建表時直接指定的方式進行定義。以下是一般情況下定義外鍵的 SQL 語法[^5]: ```sql CREATE TABLE 子表 ( 列名1 數據類型, 列名2 數據類型, ... CONSTRAINT 外鍵名稱 FOREIGN KEY (子表列名) REFERENCES 主表(主表列名) ); ``` 如果是在已有表的基礎上添加外鍵,則可以使用如下語句: ```sql ALTER TABLE 子表 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (子表列名) REFERENCES 主表(主表列名); ``` #### 關鍵點解析 1. **外鍵的作用** 外鍵的主要作用是建立并維護表與表之間的關聯性,同時保障數據的一致性和完整性。當一個表中的某些記錄依賴于另一個表的數據時,外鍵能夠防止非法數據的插入、更新或刪除操作[^3]。 2. **外鍵命名規則** 在定義外鍵時,建議給外鍵起一個有意義的名字以便后續管理和排查問題。例如,在學生表和班級表的關系中,可以命名為 `stu_class_fk` 表示這是學生表到班級表的一個外鍵約束。 3. **主表與子表的關系** 被引用的表(即主表)必須有一個主鍵或者唯一鍵作為目標字段。而設置外鍵的表(即子表),其對應的字段應匹配主表的目標字段類型和長度[^4]。 4. **級聯操作選項** 可以為外鍵配置一些額外的行為來處理父表變化時的影響,比如級聯刪除 (`ON DELETE CASCADE`) 和級聯更新 (`ON UPDATE CASCADE`)。這些行為可以幫助自動同步父子表間的變化,減少手動干預的需求。 #### 實際案例演示 假設我們需要構建一張學生表 `student` 和一張班級表 `class` 的關系模型,其中每一名學生的所屬班級由 `classno` 字段表示。具體建表語句如下所示: ##### 創建主表(班級表) ```sql CREATE TABLE class ( classno INT PRIMARY KEY, -- 班級編號為主鍵 classname VARCHAR(50) NOT NULL -- 班級名稱 ); ``` ##### 創建子表(學生表)并加入外鍵 ```sql CREATE TABLE student ( stuno INT PRIMARY KEY, -- 學生編號為主鍵 stuname VARCHAR(50) NOT NULL, -- 學生姓名 classno INT, -- 所屬班級編號 CONSTRAINT stu_class_fk FOREIGN KEY (classno) REFERENCES class(classno) ON DELETE SET NULL ); ``` 上述例子中設置了外鍵 `stu_class_fk` 將 `student.classno` 鏈接到 `class.classno` 上,并指定了刪除動作設為空值(`SET NULL`)的情況下的行為。 #### 總結 通過合理的設計外鍵以及相應的級聯策略,可以在一定程度上簡化應用程序邏輯的同時增強系統的健壯性。然而需要注意的是,過多復雜的外鍵可能會降低性能,因此實際應用過程中需權衡利弊做出適當調整。
查看
python智能搜索excel中的數據
<think>好的,我需要處理用戶的問題:如何用Python實現對Excel文件中數據的智能搜索,使用pandas和openpyxl進行數據處理。首先,用戶提到的工具是pandas和openpyxl,這兩個庫都是處理Excel的常用工具。pandas主要用于數據分析和處理,而openpyxl則用于讀寫Excel文件,特別是.xlsx格式。 接下來,我需要確定什么是“智能搜索”。用戶可能指的是模糊匹配、關鍵詞搜索、多條件篩選,或者更高級的自然語言處理。但考慮到用戶提到的庫是pandas和openpyxl,可能更傾向于基礎的數據處理功能。因此,我應該先覆蓋基本的搜索方法,再擴展到更智能的方面,比如模糊匹配和簡單自然語言處理。 首先,使用pandas讀取Excel數據,這可以通過read_excel函數實現。然后,進行數據清洗,處理缺失值和重復值,確保數據質量。接下來,基本的搜索可以包括精確匹配、包含特定字符串、多列條件組合等。例如,使用df[df['列名'].str.contains('關鍵詞')]進行篩選。 對于更智能的部分,可以考慮模糊匹配,比如使用fuzzywuzzy庫來計算字符串相似度,篩選出相似度高的結果。另外,處理自然語言查詢可能需要將用戶的輸入解析為搜索條件,比如從“價格高于100且類別為電子”中提取出價格>100和類別=='電子'的條件,應用到數據框上。 此外,可能需要考慮性能優化,比如數據量大的時候,使用向量化操作或索引來加快搜索速度。同時,保存結果到新的Excel文件,可以用to_excel方法。 在生成相關問題的時候,需要圍繞用戶的需求擴展,比如如何處理更復雜的搜索條件,如何提升搜索效率,或者如何集成到Web應用中。 需要確保回答中的代碼示例正確,使用pandas和openpyxl的方法無誤,并且給出實際的例子,比如讀取數據、清洗、搜索、模糊匹配等步驟。同時,引用相關的文檔或資源,幫助用戶進一步學習。 最后,檢查是否符合系統級指令:行內公式用$...$,獨立公式用$$...$$,中文回答,生成相關問題,引用標識正確。雖然當前問題不涉及數學公式,但如果有相關部分需要展示的話,要遵循格式。例如,如果提到數據相似度計算的公式,可以用LaTeX表達。 總結步驟: 1. 使用pandas讀取Excel數據。 2. 數據清洗(處理缺失值、去重)。 3. 基本搜索方法:精確匹配、模糊匹配、多條件篩選。 4. 高級方法:模糊字符串匹配(fuzzywuzzy)、自然語言查詢處理。 5. 保存結果。 6. 代碼示例。 7. 相關問題生成。 現在需要將這些步驟結構化,確保清晰易懂,代碼正確,并且覆蓋用戶可能的深層需求,比如智能搜索的不同層次實現方式。</think>### 使用Python實現Excel數據的智能搜索 以下是基于`pandas`和`openpyxl`的解決方案,涵蓋基礎到進階的搜索方法: --- #### **1. 讀取Excel數據** 使用`pandas.read_excel`加載數據: ```python import pandas as pd # 讀取Excel文件 df = pd.read_excel("data.xlsx", engine="openpyxl") ``` --- #### **2. 數據清洗** 確保數據質量: ```python # 刪除包含缺失值的行 df = df.dropna() # 去重 df = df.drop_duplicates() ``` --- #### **3. 基礎搜索方法** ##### **(1) 精確匹配** ```python # 搜索“名稱”列包含“手機”的行 result = df[df["名稱"] == "手機"] ``` ##### **(2) 模糊匹配** ```python # 搜索“描述”列包含“高性能”關鍵詞的行 result = df[df["描述"].str.contains("高性能", na=False)] ``` ##### **(3) 多條件組合** ```python # 價格>100且類別為“電子” result = df[(df["價格"] > 100) & (df["類別"] == "電子")] ``` --- #### **4. 進階智能搜索** ##### **(1) 模糊字符串匹配** 使用`fuzzywuzzy`庫實現模糊搜索: ```python from fuzzywuzzy import process # 定義搜索函數 def fuzzy_search(column, query, threshold=80): matches = process.extract(query, df[column].dropna().unique(), limit=5) return [match[0] for match in matches if match[1] >= threshold] # 示例:在“名稱”列搜索類似“智能手環”的結果 matched_names = fuzzy_search("名稱", "智能手環") result = df[df["名稱"].isin(matched_names)] ``` ##### **(2) 自然語言查詢解析** 將用戶輸入轉換為條件(需結合字符串解析): ```python # 示例:解析“價格低于500且評分高于4.5” query = "價格低于500且評分高于4.5" conditions = [] if "價格低于" in query: value = float(query.split("價格低于")[1].split("且")[0]) conditions.append(df["價格"] < value) if "評分高于" in query: value = float(query.split("評分高于")[1]) conditions.append(df["評分"] > value) result = df[pd.concat(conditions, axis=1).all(axis=1)] ``` --- #### **5. 保存結果** 將搜索結果導出到新Excel文件: ```python result.to_excel("search_result.xlsx", index=False, engine="openpyxl") ``` --- ### **代碼說明** - `pandas`提供高效的數據操作,`openpyxl`支持讀寫.xlsx文件。 - 模糊搜索依賴`fuzzywuzzy`,需安裝:`pip install fuzzywuzzy python-Levenshtein`。 - 自然語言解析需根據業務需求定制更復雜的邏輯,或集成NLP庫(如`spaCy`)。 ---
查看
reduce怎么寫多維轉一維
### 使用 `reduce` 方法實現多維數組轉一維數組 在 JavaScript 中,可以利用 `reduce()` 和 `concat()` 方法將多維數組展平為一維數組。以下是詳細的解釋以及代碼示例。 #### 原理說明 `reduce()` 是一種高階函數,用于遍歷數組并對累積器執行回調操作。通過將其與 `concat()` 配合使用,可以逐步將嵌套的子數組拼接到最終的一維數組中[^1]。 #### 示例代碼 以下是一個完整的代碼示例: ```javascript // 定義一個多維數組 const multiDimensionalArray = [1, [2, [3, 4]], [5, 6], [7, [8, 9, [10, 11]]]]; // 使用 reduce() 和 concat() 展開多維數組 const flattenedArray = multiDimensionalArray.reduce((accumulator, currentValue) => { return accumulator.concat( Array.isArray(currentValue) ? currentValue.flat(Infinity) : currentValue ); }, []); console.log(flattenedArray); ``` 上述代碼的核心邏輯在于: - 判斷當前元素是否為數組 (`Array.isArray`)。 - 如果是數組,則調用 `.flat(Infinity)` 來處理任意深度的嵌套。 - 否則直接將該值加入到累加器中[^2]。 對于更簡單的二維數組情況,可以直接采用如下方式: ```javascript var arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; newArr = arr.reduce((pre, val) => pre.concat(val), []); console.log(newArr); // 輸出:[1, 2, 3, 4, 5, 6, 7, 8, 9] ``` 此方法適用于僅需處理兩層嵌套的情況。 #### 更通用的方式(支持無限級嵌套) 為了適配更深層數的嵌套結構,可以通過遞歸或者持續檢測是否存在數組項來進行動態調整: ```javascript function flattenDeep(arr) { while (arr.some(Array.isArray)) { arr = [].concat(...arr); } return arr; } const deepNestedArray = [1, [2, [3, [4, [5]]]]]; console.log(flattenDeep(deepNestedArray)); // 輸出:[1, 2, 3, 4, 5] ``` 這種方法不斷重復展開直到沒有任何子數組為止[^4]。 --- ### 總結 以上展示了三種不同的技術路徑來解決多維數組向一維轉化的問題,分別適合不同場景下的需求。無論是簡單還是復雜的輸入數據形式都可以找到對應的解決方案。
查看
字符串11怎么轉成數字
<think>好的,我現在需要回答用戶的問題:如何在編程中將字符串'11'轉換為數字類型。首先,我需要根據用戶提供的引用內容來整合答案,同時遵循系統級指令中的格式要求。 用戶提供了幾個引用,其中引用[1]提到在Java中將字符串轉換為數字,并提到NumberFormatException的情況。引用[2]和[3]涉及十六進制轉換和字節數組處理,可能相關但可能不是直接答案。引用[4]關于R語言的日期轉換,可能不相關。引用[5]提到C語言的strtol函數。因此,我需要涵蓋不同編程語言中的轉換方法,但主要參考引用[1]和[5]。 首先,我應該分步驟說明常見編程語言中的轉換方法,例如Java、Python、C++、JavaScript、C#和C,并確保每個例子符合LaTeX格式的要求,行內公式用$...$,獨立公式單獨成段。同時,需要生成相關問題,放在最后。 需要注意每個代碼示例的正確性,比如Java中使用Integer.parseInt,Python用int(),C++用stoi,JavaScript用parseInt或Number,C#用int.Parse或Convert.ToInt32,C語言用atoi或strtol。要確保引用正確的引用來源,比如引用[1]對應Java的情況,引用[5]對應C的strtol。 然后,生成相關問題需要考慮用戶可能感興趣的方向,比如異常處理、不同進制轉換、性能比較等。 最后,檢查格式是否符合要求,比如代碼塊用三個反引號包裹,正確添加引用標識,沒有使用任何markdown格式,除了代碼塊。同時,確保回答結構清晰,分步驟說明,語言自然口語化,避免使用專業術語而不解釋。</think>在編程中將字符串'11'轉換為數字類型的方法根據編程語言的不同有所差異,以下是常見語言的實現方式: ### 1. Java 使用`Integer.parseInt()`方法: ```java String str = "11"; int num = Integer.parseInt(str); // 返回基本數據類型int[^1] Integer numObj = Integer.valueOf(str); // 返回Integer對象 ``` 當字符串包含非數字字符時會拋出`NumberFormatException` ### 2. Python 直接使用類型轉換函數: ```python str_num = '11' num = int(str_num) # 轉換為整數 float_num = float(str_num) # 轉換為浮點數 ``` ### 3. C++ 使用`std::stoi`系列函數: ```cpp #include <string> std::string str = "11"; int num = std::stoi(str); // 字符串轉整型 double d = std::stod(str); // 字符串轉浮點型 ``` ### 4. JavaScript 使用`parseInt()`或一元加運算符: ```javascript let str = '11'; let num = parseInt(str, 10); // 指定十進制解析 let num2 = +str; // 通過類型強制轉換 ``` ### 5. C# 使用`int.Parse()`或`Convert.ToInt32()`: ```csharp string str = "11"; int num = int.Parse(str); // 直接解析 int safeNum = Convert.ToInt32(str); // 帶異常處理 ``` ### 6. C語言 使用標準庫函數: ```c #include <stdlib.h> char *str = "11"; int num = atoi(str); // 簡單轉換 long numL = strtol(str, NULL, 10); // 帶進制控制的轉換[^5] ```
查看
利用c語言寫8.4 參考例8.6程序中的函數ReadScore()和Average() ,輸入某班學生某門課的成績(最多不超過40人),當輸入為負值時,表示輸入結束,用函數編程統計成績高于平均分的學生人數。
<think>嗯,用戶讓我用C語言寫一個程序,參考例8.6中的ReadScore()和Average()函數,輸入學生成績,直到輸入負值為止,然后統計高于平均分的學生人數。這個問題看起來不算太難,但有幾個地方需要注意。首先,我得回憶一下例8.6的結構,雖然用戶沒給出具體內容,但根據常見的例子,ReadScore可能負責讀取成績到數組,而Average計算平均分。 首先,我需要確定函數的參數和返回值。ReadScore應該接收一個數組,并返回實際輸入的學生人數。在讀取過程中,當用戶輸入負數時停止。這里需要注意輸入的循環控制,比如用while或do-while循環,每次讀取一個數,檢查是否為負,是的話就break,否則存入數組。同時,要確保不超過40人的限制,所以數組大小應該是40,循環次數最多40次。 然后是Average函數,它需要接收成績數組和人數n,計算平均分并返回。這里要注意浮點數除法,可能需要將總和轉為float或double類型。計算總和的時候用循環累加。 接下來,統計高于平均分的人數。這部分可以單獨寫一個函數,比如CountAboveAverage,同樣接收數組和人數n,調用Average得到平均分,然后遍歷數組,統計比平均分高的元素個數。或者,也可以在main函數里直接調用Average,然后遍歷統計。不過按照用戶要求,可能希望用函數實現,所以最好單獨寫一個函數。 主函數的流程大概是:聲明數組,調用ReadScore獲取實際人數,如果人數為0要處理(比如提示沒有輸入),否則計算平均分,統計人數并輸出。 可能的錯誤點:忘記處理n為0的情況,導致除以0錯誤。所以在Average函數里需要檢查n是否為0,或者在調用前檢查。另外,輸入的成績可能是整數,但平均分可能是小數,所以類型處理要注意,避免整數除法。 然后,測試一下各種情況,比如輸入負數直接結束,輸入剛好40人,輸入超過40人時是否截斷。例如,當輸入第40個成績后,不管是不是負數,都結束輸入?或者當輸入第40個成績后,即使還沒輸入負數,也停止?這點需要明確題目要求。題目說最多不超過40人,所以當輸入到40個時,無論是否負數都應該停止?或者繼續等待輸入,但最多存40個,當輸入負數時結束。例如,用戶可能在輸入到30個時輸入負數,這時實際人數是30。或者如果用戶輸入了40個正數,然后繼續輸入的話,后續的會被忽略。所以ReadScore函數里的循環應該最多循環40次,每次讀取一個數,如果是負數就break,否則存入數組,直到數組滿40個。 現在,具體編寫ReadScore函數:函數返回int,即實際人數。參數是數組,可能需要用指針傳遞,或者在函數參數中傳入數組,然后在函數內修改。例如: int ReadScore(int scores[]) { int count = 0; int num; printf("輸入成績,負數結束:\n"); while (count < 40) { scanf("%d", &num); if (num < 0) { break; } scores[count] = num; count++; } return count; } 這樣處理的話,當輸入負數或達到40人時停止。這樣是正確的。 然后Average函數: float Average(int scores[], int n) { if (n == 0) return 0.0f; // 避免除零錯誤 int sum = 0; for (int i=0; i<n; i++) { sum += scores[i]; } return (float)sum / n; } 統計人數的函數: int CountAboveAverage(int scores[], int n, float avg) { int count = 0; for (int i=0; i<n; i++) { if (scores[i] > avg) { count++; } } return count; } 或者,也可以讓這個函數內部調用Average,但那樣可能需要再傳一次n,不過用戶可能希望將Average作為單獨的函數。所以主函數中: int main() { int scores[40]; int n = ReadScore(scores); if (n == 0) { printf("沒有輸入有效成績。\n"); return 0; } float avg = Average(scores, n); int count = CountAboveAverage(scores, n, avg); printf("平均分:%.2f,高于平均分的人數:%d\n", avg, count); return 0; } 這樣結構清晰。需要注意,當n為0時,Average返回0,但主函數已經處理了這種情況,所以不會有問題。 測試案例:比如輸入三個成績:90 80 70,然后輸入-1。平均分是80,高于的有兩個(90和80?不,90和80比80高嗎?平均是80的話,大于的有90和80?如果是整數的話,平均是80,那等于的情況不算。所以用戶可能需要統計的是嚴格大于平均分的人數。所以上面的例子,輸入90 80 70,平均是80,那么只有90高于,所以人數是1。那程序是否正確? 這時候需要確認,當成績等于平均分時是否不計入。題目要求是“高于平均分”,所以等于不算。代碼中的判斷是scores[i] > avg,所以正確。 另外,當所有成績都相同,比如都是60,平均分60,那么沒有高于的,統計0人。這也是正確的情況。 所以,這樣的程序應該可以滿足用戶的需求。</think>以下是用C語言實現該功能的步驟及代碼: ### 實現步驟 1. **讀取成績**:用`ReadScore()`函數循環讀取成績,遇到負數或達到40人時停止。 2. **計算平均分**:用`Average()`函數計算班級平均分。 3. **統計人數**:編寫函數統計高于平均分的學生人數。 ### 完整代碼 ```c #include <stdio.h> #define MAX_N 40 // 最大學生人數 // 函數聲明 int ReadScore(int scores[]); float Average(int scores[], int n); int CountAboveAverage(int scores[], int n, float avg); int main() { int scores[MAX_N]; // 存儲成績的數組 int n = ReadScore(scores); // 讀取成績并獲取實際人數 if (n == 0) { printf("未輸入有效成績!\n"); return 0; } float avg = Average(scores, n); // 計算平均分 int count = CountAboveAverage(scores, n, avg); // 統計高于平均分的人數 printf("平均分: %.2f\n", avg); printf("成績高于平均分的學生人數: %d\n", count); return 0; } // 讀取成績,返回實際人數 int ReadScore(int scores[]) { int count = 0; int num; printf("請輸入學生成績(輸入負數結束):\n"); while (count < MAX_N) { scanf("%d", &num); if (num < 0) break; // 輸入負數時結束 scores[count] = num; count++; } return count; // 返回實際輸入人數 } // 計算平均分 float Average(int scores[], int n) { if (n == 0) return 0.0f; // 防止除以0 int sum = 0; for (int i = 0; i < n; i++) { sum += scores[i]; } return (float)sum / n; // 強制類型轉換確保浮點除法 } // 統計高于平均分的人數 int CountAboveAverage(int scores[], int n, float avg) { int cnt = 0; for (int i = 0; i < n; i++) { if (scores[i] > avg) cnt++; // 嚴格大于平均分 } return cnt; } ``` ### 關鍵代碼解釋 1. **`ReadScore()`函數**: - 通過`while`循環讀取輸入,最多讀取40個成績。 - 遇到負數時立即終止輸入。 2. **`Average()`函數**: - 計算成績總和后,通過`(float)sum / n`確保結果為浮點數。 - 添加`n == 0`的檢查,避免除零錯誤。 3. **`CountAboveAverage()`函數**: - 遍歷數組,嚴格統計大于平均分的學生數量。 ### 示例運行 ``` 請輸入學生成績(輸入負數結束): 85 92 78 60 -1 平均分: 78.75 成績高于平均分的學生人數: 2 ``` ### 注意事項 - 輸入成績時,以空格或換行分隔。 - 平均分保留兩位小數,便于觀察結果。 - 若直接輸入負數,程序會提示“未輸入有效成績”。
查看
蟻群組合優化
### 蟻群組合優化算法概述 蟻群組合優化算法是一種基于群體智能的啟發式優化方法,最初由意大利學者 Marco Dorigo 提出并應用于解決旅行商問題 (TSP)[^1]。該算法模擬螞蟻覓食過程中通過釋放信息素尋找最短路徑的行為,利用正反饋機制逐步構建最優解。 #### 算法實現原理 蟻群組合優化算法的核心在于信息素更新和狀態轉移概率計算兩個方面: - **信息素更新**:每只螞蟻完成一次遍歷后,會根據所找到的路徑長度調整對應邊上的信息素濃度。全局信息素更新公式如下所示: ```python tau_ij = (1 - rho) * tau_ij + delta_tau_ij ``` 其中 \( \tau_{ij} \) 表示節點 i 到 j 的信息素濃度,\( \rho \) 是蒸發系數,用于防止信息素無限累積,而 \( \delta\tau_{ij} \) 是新增的信息素量。 - **狀態轉移概率**:螞蟻在選擇下一個訪問城市時遵循一定的概率分布規則。具體表達式為: \[ P_{ij}^{k}(t)=\frac{\left[\tau_{ij}\right]^{\alpha}\left[\eta_{ij}\right]^{\beta}}{\sum_{l \in J_k(t)}\left[\tau_{il}\right]^{\alpha}\left[\eta_{il}\right]^{\beta}} \] 這里 \( \alpha, \beta \) 控制信息素重要性和啟發函數的重要性,分別代表歷史經驗和當前局部偏好。 #### 應用領域 由于其強大的尋優能力以及易于與其他技術相結合的特點,蟻群組合優化算法被廣泛應用于多個實際場景之中: - **物流配送規劃**:針對貨物運輸路線設計問題,采用改進型蟻群算法可以有效降低總行駛距離與時間成本。 - **網絡路由管理**:在網絡通信環境中動態分配數據包傳輸路徑,提高帶寬利用率的同時減少延遲現象發生幾率。 - **生產調度安排**:對于復雜的制造流程而言,合理制定各工序執行順序至關重要;借助此算法能夠快速求得近似最佳方案。 ```python import numpy as np def ant_colony_optimization(distance_matrix, num_ants=50, max_iter=100, alpha=1, beta=2, evaporation_rate=0.5): n_cities = distance_matrix.shape[0] pheromone = np.ones((n_cities, n_cities)) / n_cities best_path = None best_length = float('inf') for _ in range(max_iter): all_paths = [] # Each Ant's Tour Construction Phase for _ant in range(num_ants): visited = set() current_city = np.random.randint(0, n_cities) path = [current_city] while len(path) != n_cities: probabilities = calculate_probabilities(current_city, visited, pheromone, distance_matrix, alpha, beta) next_city = select_next_city(probabilities) path.append(next_city) visited.add(next_city) current_city = next_city length_of_path = compute_total_distance(path, distance_matrix) if length_of_path < best_length: best_length = length_of_path best_path = path all_paths.append(path) update_pheromones(all_paths, pheromone, distance_matrix, evaporation_rate) return best_path, best_length def calculate_probabilities(current_city, visited_set, pheromone_matrx, dist_matrix, apha, betta): unvisited = list(set(range(len(dist_matrix))) - visited_set) denom_sum = sum([pheromone_matrx[current_city][j]**apha * (1/dist_matrix[current_city][j])**betta for j in unvisited]) probs = [(pheromone_matrx[current_city][j]**apha * (1/dist_matrix[current_city][j])**betta)/denom_sum if j not in visited_set else 0 for j in range(len(dist_matrix))] return probs def select_next_city(probs_list): rand_val = np.random.rand() cumulative_probability = 0. for idx, prob in enumerate(probs_list): cumulative_probability += prob if rand_val <= cumulative_probability and prob > 0: return idx raise ValueError("No valid city selected!") def compute_total_distance(route_sequence, distances_array): total_dist = 0 for src, dest in zip(route_sequence[:-1], route_sequence[1:]): total_dist += distances_array[src][dest] return total_dist + distances_array[route_sequence[-1]][route_sequence[0]] def update_pheromones(paths_taken_by_all_ants, global_phero_table, cost_matrix, rho_value): global_phero_table *= (1-rho_value) for single_ant_route in paths_taken_by_all_ants: tour_cost = compute_total_distance(single_ant_route, cost_matrix) contribution_to_each_edge = 1/tour_cost for node_pair_start, node_pair_end in zip(single_ant_route[:-1], single_ant_route[1:]): global_phero_table[node_pair_start][node_pair_end] += contribution_to_each_edge global_phero_table[node_pair_end][node_pair_start] += contribution_to_each_edge ```
查看
精選課程 更多
Java實戰之Redis入門到精通
簡介:本門課程主要講解的是緩存中間件Redis常見且典型的數據結構、相關的核心技術棧及其典型的應用場景的實戰,其中涉及到的相關代碼實戰主要是基于SpringBoot2.x搭建的項目進行實戰實現的! 其中的數據結構就包括:字符串String/列表List/集合Set/有序集合SortedSet/哈希Hash以及Key的過期失效等等,在課程的最后還介紹了“點贊系統中點贊功能模塊的設計與實現”,可以說是拒絕紙上談兵、注重實戰并學以致用,課程的大綱如下所示: 下面貼一貼本課程重點介紹的數據結構及其典型的應用場景吧(完整的請參考課程的目錄),見下面的大圖: 其中,“點贊功能模塊的設計與實戰實現”可以說是本門課程的核心重點與高潮!如下幾張圖所示即為點贊功能模塊所拆分出來的諸多詳細的功能流程圖: 掌握本門課程相關的技術要點之后,debug相信各位小伙伴在面試以及實際項目實戰開發過程中將能帶來大大的幫助.... 其他相關的核心功能在這里就不一 一詳細介紹了....還等什么呢,此時不學習redis,更待何時呀!!!
鐘林森 開發組長/高級工程師
超級會員 69.00 ¥69.00 8825觀看
Java實戰之Spring Boot入門到精通
內容簡介: 本課程主要是從最基礎的技術要點一步一個腳印的介紹Spring Boot2.0相關的核心技術棧,包括如何基于Spring Boot2.0搭建一個企業級的多模塊項目、整合Spring MVC和Mybatis實現項目中功能模塊的CRUD,校驗器Validator、Lombok、動態配置參數、開發環境切換、全局異常處理、定時任務、多線程、熱加載、發送郵件、上傳下載文件、多數據源等核心干貨,為各位小伙伴提供企業級項目開發中常見且典型的核心技術! 其課程大綱如下所示: 在課程的最后,我們介紹并實戰了一個典型的應用場景:“用戶注冊”,主要是將前面章節介紹的內容融入到一個完整的功能模塊中,做到學以致用!其完整的功能流程圖如下圖所示: 基本要求: 1、基本要求:具備一定的JavaSE以及Java Web項目的開發基礎、了解spring boot更佳 2、工具要求:會使用Intellij IDEA 、Navicat 以及 Postman
鐘林森 開發組長/高級工程師
超級會員 99.00 ¥99.00 1.5w+觀看
從零開始自然語言處理
本課程隸屬于自然語言處理(NLP)實戰系列。自然語言處理(NLP)是數據科學里的一個分支,它的主要覆蓋的內容是:以一種智能與高效的方式,對文本數據進行系統化分析、理解與信息提取的過程。通過使用NLP以及它的組件,我們可以管理非常大塊的文本數據,或者執行大量的自動化任務,并且解決各式各樣的問題,如自動摘要,機器翻譯,命名實體識別,關系提取,情感分析,語音識別,以及主題分割等等。 一般情況下一個初級NLP工程師的工資從15萬-35萬不等,所以掌握NLP技術,對于人工智能學習者來講是非常關鍵的一個環節。 【超實用課程內容】 課程從自然語言處理的基本概念與基本任務出發,對目前主流的自然語言處理應用進行全面細致的講解,包括文本分類,文本摘要提取,文本相似度,文本情感分析,文本特征提取等,同時算法方面包括經典算法與深度學習算法的結合,例如LSTM,BiLSTM等,并結合京東電商評論分類、豆瓣電影摘要提取、今日頭條輿情挖掘、餓了么情感分析等過個案例,幫助大家熟悉自然語言處理工程師在工作中會接觸到的常見應用的實施的基本實施流程,從0-1入門變成自然語言處理研發工程師。 【課程如何觀看?】 PC端:https://edu.csdn.net/course/detail/25649 移動端:CSDN 學院APP(注意不是CSDN APP哦) 本課程為錄播課,課程2年有效觀看時長,大家可以抓緊時間學習后一起討論哦~ 【學員專享增值服務】 源碼開放 課件、課程案例代碼完全開放給你,你可以根據所學知識,自行修改、優化 下載方式:電腦登錄https://edu.csdn.net/course/detail/25649,點擊右下方課程資料、代碼、課件等打包下載 通過第二課時下載材料
錢興會 CTO/CIO/技術副總裁/總工程師
超級會員 199.00 ¥199.00 1w+觀看
iOS動態庫注入
本課程主要針對iOS動態庫注入技術做了詳細講解和實戰演示,分為技術篇和運維篇,最終目標是將動態庫注入到目標ipa包中,并且執行動態庫中的代碼,實現動態庫與ipa交互。 技術篇&nbsp;-&nbsp;主要從基礎知識、涉及工具,以及一個完整的手動注入實例流程來講解,面向技術開發人員; 運維篇&nbsp;-&nbsp;通過利用自動注入工具、重簽名工具來可視化的注入動態庫,面向運維等非技術人員; 課程目錄 課程簡介 1,課程目標和大綱 技術篇 2,基礎知識&nbsp;-&nbsp;動態庫 3,基礎知識&nbsp;-&nbsp;IPA包 4,基礎知識&nbsp;-&nbsp;Mach-O 5,基礎知識&nbsp;-&nbsp;代碼注入 6,基礎知識&nbsp;-&nbsp;重簽名 7,涉及工具&nbsp;-&nbsp;Xcode/iOSOpenDev/Terminal 8,涉及工具&nbsp;-&nbsp;yololib/MachOView/iFunBox/iReSign 9,實例演示&nbsp;-&nbsp;創建.dylib動態庫 10,實例演示&nbsp;-&nbsp;創建測試APP 11,實例演示&nbsp;-&nbsp;手動注入動態庫(開發模式) 12,實例演示&nbsp;-&nbsp;手動注入動態庫(重簽名模式) 運維篇 13,運維篇&nbsp;-&nbsp;準備工作 14,運維篇&nbsp;-&nbsp;實戰演示 15,運維篇&nbsp;-&nbsp;技術支持 課程總結 16,課程總結
王明敏 CEO/董事長/總經理
超級會員 69.00 ¥69.00 2253觀看
【鴻蒙項目實戰】基于鴻蒙服務卡片的分布式游戲:找我
本課程將以一個鴻蒙(HarmonyOS)App作為基礎講解如何使用Java開發鴻蒙App。這個App是一個基于鴻蒙服務卡片的游戲,類似“連連看”。這款游戲涉及到的技術如下: &nbsp; 1. 組件的使用(Button、Text、ListContainer) 2. 服務卡片的基本使用方法 3. 服務卡片之間的交互 4. FA(Page Ability的使用方法) 5. FA的流轉 6. 獲取設備列表 7. 數據庫技術 8. 網絡技術 9. 多線程技術 10. 國際化 &nbsp; &nbsp; &nbsp;
李寧 技術總監/研發總監
超級會員 128.00 ¥128.00 3196觀看
Android 10.0 根文件系統和編譯系統
1, 講解android根文件系統結構和組成 2, 講解android系統鏡像的概念和拆包 3, 講解Android系統源碼結構 4, 講解Android系統編譯規則 5, 講解Android系統ADB使用和Log日志調試方法 6, 講解Android系統Android.mk和Android.bp是各種規則 &nbsp;
旗浩 系統開發
458.00 ¥458.00 2618觀看
優質內容專輯 更多
微信小程序源碼合集
微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用"觸手可及"的夢想,用戶掃一掃或搜一下即可打開應用。 不懂開發,怎樣可以擁有一個屬于自己的小程序?二次開發,想要基于某個小程序框架實例練手? 本期專題收集8個小程序源碼資源,包含交友互動、答題、商城、教育等超多行業,其中像【微信小程序商城源碼】資源中除了包含小程序的商品瀏覽,商品詳情,微信授權登錄,微信支付等功能,還有后臺管理系統,服務后端可進行商品及訂單的管理,包含上架、下架、公告,發貨等功能。 現在一鍵打包下載僅需【¥9.9】,開通會員更能免費下載,超多會員專屬福利等你解鎖。
瀏覽 · 14.4w+ 下載 · 1.1w+
Python爬蟲經典案例合集
網絡爬蟲(又稱為網頁蜘蛛,網絡機器人)就是模擬瀏覽器發送網絡請求,接收請求響應,按照一定的規則,自動地抓取萬維網信息的程序或者腳本。 不精通python,怎樣快速入門python爬蟲、學好爬蟲技能?“小白”如何讓自己在爬蟲道路上少走彎路,實現彎道超車? 本期專題收錄8個python爬蟲經典案例,內容包含新浪微博、招聘網站、天氣預報、股票評論、豆瓣電影等經典實例,其中【python新浪微博爬蟲,爬取微博和用戶信息】資源中不僅包含爬取微博用戶的基本信息,還包含數據可視化分析代碼,讓你從零開始快速學會簡單的Python網絡爬蟲,實現數據的采集與分析。
瀏覽 · 11w+ 下載 · 5989
java游戲源碼經典合集
作為編程語言界的常青藤Java,無論是在企業級應用,還是后端開發中,均有著無可替代的地位。而對于Java的入門,很多新手們不可避免的會走一些彎道。那么,如何才能有效地避開這些誤區?如何快速實踐? 本期專題收錄了8個java游戲源碼經典資源,以迭代重構的方式構建游戲基本雛形,在游戲中掌握java語言的表達魅力。其中【java源碼包---java 源碼 大量 實例】通過多個游戲開發實戰案例,講解游戲開發中的熱點技術知識,帶領初學者走進Java,從實現玩家功能到運行測試游戲,手把手教你玩轉小游戲開發,不知不覺中提高Java編程能力。
瀏覽 · 12.1w+ 下載 · 1.3w+
微信小程序商城源碼合集
微信小程序是一種無需下載安裝即可使用的應用,能以最低的成本觸達用戶。掌握了微信小程序開發技術,等同于打通了手機應用開發藍海的出海口! 零基礎新手如何快速入門微信小程序開發?如何擁有自己的微信小程序商城? 本期專題整理了8個微信小程序商城源碼資源,包含從開發賬號注冊、開發工具安裝、小程序開發到發布的全過程。其中【CSDN最全面的微信小程序源碼和模板】提供的上百個微信小程序商城開發源碼不僅可以實現小程序的商品瀏覽,商品詳情,微信授權登錄,微信支付等功能,還有后臺管理系統,服務后端可進行商品及訂單的管理,包含上架、下架、公告,發貨等功能,手把手帶你理解小程序的基本架構和開發手法,讓你在開發路上少走彎路。
瀏覽 · 2.8w+ 下載 · 1129
上傳資源 快速賺錢
voice
center-task 前往需求廣場,查看用戶熱搜
主站蜘蛛池模板: 欧美日韩免费在线 | 成人一区av偷拍 | 狠狠干影院 | 国产精品久久视频 | 亚洲一区二区三区在线视频 | 午夜日韩精品 | 岛国av在线免费观看 | 亚洲精品久久 | 免费在线黄色av | 久久精品亚洲 | 99久久精品免费看国产四区 | 粉嫩国产精品一区二区在线观看 | 午夜影视网 | 青草青草久热精品视频在线观看 | 91欧美| 亚洲情综合五月天 | 精品免费国产一区二区三区 | 蜜臀网 | 亚洲精彩视频 | 日韩精品视频在线观看一区二区三区 | 精品一区二区三区免费视频 | 久久久久亚洲精品国产 | 日韩乱码av| 五月综合激情在线 | 日韩美女在线看免费观看 | 求个av网址 | 久久精品久久久久久 | 久久精品日产第一区二区三区 | 成人精品国产 | 涩色视频在线观看 | 久久精品亚洲精品国产欧美 | 日韩免费福利视频 | 亚洲国产一区二区视频 | 黄色大片在线 | 成人a视频在线观看 | 国产成人高清成人av片在线看 | 国产精品99久久久久久动医院 | 国产精品视频在线观看 | 亚洲一区免费 | 欧美黄色精品 | 欧美久久久电影 |
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部