15 數據結構及算法應用

15 數據結構及算法應用

15.1 算法策略區分

15.1.1、分治法

????????特征:把一個問題拆分成多個小規模的相同子問題,一般可用遞歸解決。

????????經典問題:斐波那契數列、歸并排序、快速排序、矩陣乘法、二分搜索、大整數乘法、漢諾塔。

15.1.2、貪心法

(一般用于求滿意解)???????

????????特征:局部最優,但整體不見得最優。每步有明確的,既定的策略。

????????經典問題:背包問題(如裝箱)、多機調度、找零錢問題。

15.1.3、動態規劃法

(用于求最優解)--“最優子結構”和遞歸式????

????????特征:劃分子問題,并把子問題結果使用數組存儲,利用查詢子問題結果構造最終問題結果。(一般自頂向下時間復雜度為O(2^n),自底向上時間復雜度為O(n^a)效率更高)
????????經典問題:斐波那契數列、矩陣乘法、背包問題、LCS最長公共子序列

15.1.4、回溯法

????????特征:系統的搜索一個問題的所有解或任一解

????????經典問題:N皇后問題、迷宮、背包問題

15.1.5 特征總結

?

算法策略判斷:
????????1、回溯,大家比較熟悉,有嘗試探索和回退的過程。這個比較好識別。

????????2、分治分治與動態規劃法其實最難區分,分治不好解決問題,從而記錄中間解解決問題,有了動態規劃法,但是在軟設考試中,分治目前只有二分的思想,二分以外的思想都用動態規劃法解決了。二分的時間復雜度,與O(nlog_{2n})相關,注意有沒有外層嵌套循環。(結合歸并排序、快速排序的過程,也是二分的)

????????3、動態規劃法,有遞歸式,經常考查遞歸式,此時自底向上實現時,中間解基本上是查表可得的,所以時間復雜度一般是O(n^k),具體k是多少,根據for循環的嵌套。此時循環變量能夠看到,是從0或1開始,到n結束,這種情況就是從小規模到大規模自底向上的。如果用到自頂向下,其實跟分治的實現就差不多了,查表的意義基本上可以忽略不計了,時間復雜度為O(2^n),遞歸的變量一般由n開始,向1縮小,所以是大規模到小規模,也就是自頂向下的。(一般動態規劃法涉及遞歸式,遞歸式還會經常用在代碼填空中讓大家補充缺失的填空,然后會有“最優子結構”的描述,會有表(數組)記錄中間解。)

????????4、貪心法,有時候也會出現“最優子結構”的描述,但是沒有遞歸式。考慮的是當前最優,求得的是滿意解。(特殊情況下,貪心法有時候得到的也可以是最優解,比如部分背包問題)?

15.2 時間復雜度與空間復雜度

????????時間復雜度是指程序運行從開始到結束所需要的時間。通常分析時間復雜度的方法是從算法中選取一種對于所研究的問題來說是基本運算的操作,以該操作重復執行的次數作為算法的時間度量。
常見的對算法執行所需時間的度量:

????????

????????空間復雜度是指對一個算法在運行過程中臨時占用存儲空間大小的度量。一個算法的空間復雜度只考慮在運行過程中為局部變量分配的存儲空間的大小

15.3 代碼填空技巧

仔細審題:
????????1、檢查所有用到的變量是否有聲明,是否賦初值;
????????2、檢查是否有返回值,與題干要求返回變量名或上下文是否一致;

????????3、檢查for循環是否有計數變量的賦值、初值和終止條件;
????????4、注意while循環的開始和結束;

????????5、有一些變量名具有特殊含義,比如一般用max/min保存最大值/最小值,temp作為中間變量,一般用來存儲中間值或用來做數值交換的中間過渡。x>max,則修正max=x
x<min,則修正min=x。

????????6、對特殊的算法策略:回溯法是否有回退k=k-1;對分治法遞歸的遞歸調用(調用自身函數名);對動態規劃法的查表操作。
????????7、注意題干描述和代碼說明、遞歸式(條件和等式)、代碼中的注釋、代碼上下文。一般特殊數據結構調用方式會在代碼說明或代碼上下文中給出。

????????(1)題干公式很重要,一般公式體現在代碼中,會有循環邊界、判斷條件等;

????????(2)代碼說明很重要,一般代碼說明會指出一些變量的定義,初始值和邊界值;

????????(3)代碼上下文很重要,可以根據上下文判斷有沒有缺失變量聲明、變量賦值;

????????(4)題干說明很重要,題干有時候也會給出循環邊界、判斷條件等內容,還可以根據題干描述,判斷使用的算法策略,不同的算法策略,一般會有一些典型的代碼缺失,比如:動態規劃法可能會考查題干給出的遞歸式以及最優解的判斷,分治法一般也會考查到遞歸式以及問題的劃分,貪心法一般會考查滿意解的當前最優判斷條件,回溯法一般會考查找和回退的過程。

15.4? 例題

15.4.1?背包問題

15.4.1.1 背包問題介紹

15.4.1.2 貪心法解決

15.4.1.3?回溯法解決

15.4.1.4?動態規劃法解決

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72718.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72718.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72718.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于大模型的唇裂手術全流程預測與應用研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目標與內容 二、唇裂相關醫學知識概述 2.1 唇裂的定義、分類與發病原因 2.2 唇裂對患者生理與心理的影響 2.3 傳統唇裂治療方法與局限性 三、大模型技術原理與應用基礎 3.1 大模型概述 3.2 適用于唇裂預測的大模型類型及特…

環境變量設置異常導致UOS文件管理器無法正常運行

編譯QT5.15.2&#xff0c;與UOS20.9的QT依賴沖突 現象原因解決方法 現象 重啟系統后UOS桌面變成黑色&#xff0c;沒有任何圖標&#xff0c;任務欄的應用本來是有預覽的&#xff0c;但也變得不可用。 原因 找了很久&#xff0c;查到原來是dde-file-manager未能正常啟動。直接…

《認知覺醒》改變的核心方法論

《認知覺醒》改變的核心方法論 一、認知覺醒的核心目標 改變 → 提升能力 → 獲得更好生活 二、大腦運作機制 腦區運算速度作用特點本能腦1.1億次/秒自動化反應&#xff0c;能量消耗低情緒腦1.1億次/秒情感驅動型決策?理智腦?40次/秒戰略指揮官角色 關鍵差異&#xff1a…

Python中的字典:深度解析與應用實踐

一、字典的本質與特性 Python字典&#xff08;Dictionary&#xff09;是以**鍵值對&#xff08;Key-Value Pair&#xff09;**形式存儲數據的無序集合&#xff0c;使用大括號{}定義。其核心特性包括&#xff1a; 快速查找&#xff1a;基于哈希表實現&#xff0c;通過鍵&#…

【藍橋杯python研究生組備賽】005 數學與簡單DP

題目1 01背包 有 N 件物品和一個容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的體積是 vi&#xff0c;價值是 wi。 求解將哪些物品裝入背包&#xff0c;可使這些物品的總體積不超過背包容量&#xff0c;且總價值最大。 輸出最大價值。 輸入格式 第一行兩個整數&a…

2024年國賽高教杯數學建模E題交通流量管控解題全過程文檔及程序

2024年國賽高教杯數學建模 E題 交通流量管控解題 原題再現 隨著城市化進程的加快、機動車的快速普及&#xff0c;以及人們活動范圍的不斷擴大&#xff0c;城市道路交通擁堵問題日漸嚴重&#xff0c;即使在一些非中心城市&#xff0c;道路交通擁堵問題也成為影響地方經濟發展和…

穿越是時空之門(java)

emm&#xff0c;之前做過一道類似的題目&#xff0c;但是這次又忘了 一開始的錯誤代碼 package Lanqiao;import javax.swing.plaf.synth.SynthTextAreaUI; import java.math.BigInteger;/*** author zb* date2025/3/19 21:33*/ public class L19701 {public static void main…

npm : 無法加載文件 C:\Program Files\nodejs\npm.ps1,因為在此系統上禁止運行腳本的處理方法

1、安裝了node.js后&#xff0c;windows powershell中直接輸入npm&#xff0c;然后就報錯 2、出現原因&#xff1a;權限不夠 系統禁用了腳本的執行&#xff0c;所以我們在windows powershell輸入npm -v的時候&#xff0c;就會報上面的錯誤。 3、解決 Set-ExecutionPolicy Un…

藍橋杯單片機之AT24C02(基于自己對AT24C02的學習和理解)

一、先用抽象法說明原理&#xff0c;讓原理變得簡單易懂&#xff1a; 1、向AT24C02寫入數據&#xff1a; 有個關系戶&#xff0c;他想安排自己的兒子進某個大廈里某個樓層的公司&#xff0c;那么他就要先找到這個公司的地址&#xff0c;然后再找到該公司是第幾樓&#xff0c;最…

Java面試易忽略知識點

1. CompletableFuture中thenApply()與thenCompose()的區別 考察點&#xff1a;組合式異步編程 解析&#xff1a; ?**thenApply()**&#xff1a;接收前序任務結果&#xff0c;返回普通對象&#xff08;同步轉換&#xff09;&#xff0c;適用簡單數據處理。?**thenCompose()*…

VLLM專題(十九)—兼容 OpenAI 的服務器

vLLM 提供了一個 HTTP 服務器,能夠實現 OpenAI 的 Completions API、Chat API 等功能! 您可以通過 vllm serve 命令啟動服務器,或者通過 Docker 啟動: vllm serve NousResearch/Meta-Llama-3-8B-Instruct --dtype auto --api-key token-abc123要調用服務器,您可以使用官…

【云原生之kubernetes實戰】在k8s環境中高效部署minio對象存儲(詳細教程)

【云原生之kubernetes實戰】在k8s環境中高效部署minio對象存儲(詳細教程) 前言一、minio介紹1.1 MinIO簡介1.2 主要特點1.3 主要使用場景二、相關知識介紹2.1 本次實踐存儲介紹2.2 k8s存儲介紹三、本次實踐介紹3.1 本次實踐簡介3.2 本次環境規劃3.3 部署前需準備工作四、檢查…

【高項】信息系統項目管理師(八)項目質量管理【3分】

項目質最管理包括把組織的質量政策應用于規劃、管理、控制項目和產品質量要求。以滿足干系人目標的各個過程。項目質量管理以執行組織的名義支持過程的持續改進活動,項目質量管理需要兼顧項目管理與項目可交付成果兩個方面,它適用于所有項目無論項目的可付成果具有何種特性。質…

python-leetcode 48.括號生成

題目&#xff1a; 數字n代表生成括號的對數&#xff0c;設計一個函數&#xff0c;用于生成所有可能并且有效的括號組合。 方法一&#xff1a;回溯 可以生成所有 2**2n 個 ‘(’ 和 ‘)’ 字符構成的序列&#xff0c;然后檢查每一個是否有效即可 為了生成所有序列&#xff0c…

TDE透明加密技術:免改造實現華為云ECS中數據庫和文件加密存儲

在數字經濟與云計算深度融合的今天&#xff0c;華為云ECS&#xff08;彈性云服務器&#xff09;已成為企業數字化轉型的核心載體&#xff0c;承載著數據庫、文件存儲、AI訓練等關鍵業務。然而&#xff0c;云上數據安全形勢日益嚴峻&#xff1a;2024年全球云環境勒索攻擊同比激增…

3D點云數據處理中的聚類算法總結

1.歐式聚類&#xff1a; 基于點的空間距離&#xff08;歐幾里得距離&#xff09;來分割點云&#xff0c;將距離較近的點歸為同一簇。 歐式聚類需要的參數&#xff1a;鄰域半徑R,簇的最小點閾值minPts&#xff0c;最大點數閾值maxPts。 實現效率&#xff1a; O(n * log n) 實現…

PCL--點云可視化

用于單個顯示、多個顯示的頭文件<visual_.h> visual_.h #pragma once #include <iostream> #include <thread> #include <pcl/visualization/pcl_visualizer.h>using namespace std::chrono_literals;/********************************************…

火星探測發展概述2025.3.20

一.火星探測歷程 1.1 探索啟蒙 火星探測的啟蒙階段可追溯至20世紀60年代,標志著人類對這顆神秘行星的科學探索正式拉開帷幕。這一時期的標志性事件包括: 1960年10月至1964年11月間,蘇聯和美國進行了6次火星探測嘗試,但均以失敗告終。 1964年11月28日,美國成功發射“水手…

DAPO:一個開源的大規模大型語言模型LLM強化學習系統

推斷擴展賦予了大型語言模型前所未有的推理能力,強化學習作為激發復雜推理的核心技術,清華大學聯合字節提出了解耦片段與動態采樣策略優化(DAPO)算法,并全面開源了一個最先進的大規模強化學習系統,該系統使用Qwen2.5-32B基礎模型在AIME 2024上取得了50分的高分。還開源了…

力扣刷題46. 全排列

46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 使用dfs搜索&#xff0c;查找所有的情況&#xff0c;首先定義所有的鏈表集合list&#xff0c;在定義每一種情況的鏈表res&#xff0c;在主函數中遍歷所有的初始元素&#xff0c;首先初始化res&#xff0c;并且添加到res中&…