計算機演算法設計與分析學習筆記1
基本概念
程式
= 演算法
+ 資料結構
演算法描述如何解決一類問題的一種方法,滿足如下性質:
-輸入
:一類問題的例項
- 輸出
:針對例項的解
- 確定性
:每條指令無歧義
- 有限性
:有限迴圈
程式 不滿足有限性
性質, eg. 作業系統為無限迴圈。
為某一類問題設計演算法,具體流程如下:
演算法複雜性分析
複雜性分析主要體現在:
- 時間複雜性T(n)
- 空間複雜性S(n)
其中,n 表徵問題的規模大小。
演算法的時間複雜性主要考慮:
最壞情況下的時間複雜性,上界
Tmax(n)=max{T(I)|size(I)=n} 最好情況下的時間複雜性, 下界
Tmin(n)=min{T(I)|size(I)=n} 平均複雜性
Tavg(n)=∑size(I)=np(I)T(I)
時間複雜度分析更側重於漸進性複雜性分析,即
limn→∞T(n)=?
5種漸進符號
注意:
即對於一個比較大的程式,通常由幾步構成,其時間複雜度取決於最複雜的一步。
判斷兩個函式的漸進關係
給定函式, f(n), g(n), f(n) > 0, g(n)>0, 有如下定理:
定理1:
定理2:
定理3:
常見函式
- 常數
- log(n) 多項式
- n的多項式
- 指數函式
- 階乘
注意:
不同函式的漸進關係可通過前節的3個定理來判斷。
Reference:
課件ch0.Introduction
相關推薦
計算機演算法設計與分析學習筆記1
基本概念 程式 = 演算法 + 資料結構 演算法描述如何解決一類問題的一種方法,滿足如下性質: -輸入:一類問題的例項 - 輸出:針對例項的解 - 確定性:每條指令無歧義 - 有限性:有限迴圈 程式 不滿足有限性性質, eg. 作業系統為無限
演算法設計與分析學習筆記——最長公共子序列
最長公共子問題待解決問題: 給定兩個序列X和Y,求其一個最長公共的序列Z。 補充解釋:X(m)={x1, x2,,,,,xm},Y(n)={y1, y2,,,,,yn},X和Y可以有共同的元素,Z是這些共同元素的集合,其元素順序在XYZ中都是升序排序的(Z中元素的
計算機演算法設計與分析1-4 金幣陣列問題
問題描述:有m*n枚金幣在桌面上排列成一個m行n列的金幣陣列。每一枚金幣或正面朝上,或背面朝上。用數字表示金幣狀態,0表示正面朝上,1表示背面朝上。 金幣陣列遊戲的規則是: (1)每次將任一行金幣翻過來放在原來的位置上。 (2)每次可以任選2列,交換這2
《計算機演算法設計與分析 第4版 (王曉東) 課後答案[1-9章]》pdf版電子書附下載連結+30個總結JVM虛擬機器的技術文排版好(收藏版)
技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。 對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的
計算機演算法設計與分析課本(王曉東著)課後演算法實現題1-3 最多約數問題
問題描述: 正整數x的約數是能整除x的正整數。正整數x的約數個數記為div(x)。例如,1 2 5 10都是10的約數,且div(10)=4。設a和b是2個正整數,a<=b,找出a和b之間約數個數最多的數x。 演算法設計: 對於給定的2個正整數a<=b,計算a和b之間約數個數最多
【計算機演算法設計與分析】——SVM
一.簡介 支援向量機(support vector machines)是一種二分類模型,它的目的是尋找一個超平面來對樣本進行分割,分割的原則是間隔最大化,最終轉化為一個凸二次規劃問題來求解。由簡至繁的模型包括: (1)當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性可分支援向量機;(2)當訓練樣本近似
【計算機演算法設計與分析】——NP
時間複雜度 時間複雜度並不是表示一個程式解決問題需要花多少時間,而是當問題規模擴大後,程式需要的時間長度增長得有多快。也就是說,對於高速處理資料的計算機來說,處理某一個特定資料的效率不能衡量一個程式的好壞,而應該看當這個資料的規模變大到數百倍後,程式執行時間是否還是一樣,或者也跟著慢了數百倍
計算機演算法設計與分析一
對待問題的思路: 1、如果問題能分解成子問題,考慮分治,並且能觀察最優子結構,考慮動態規劃,如果問題有貪心性質,考慮貪心。 2、如果問題不能分或者不好分成問題,考慮逐步改進的方法,如線性規劃,非線性規劃,二次規劃,網路流等。 3、觀察解形式,x=[x1,x2,x3,x4
計算機演算法設計與分析——半數集問題
這裡用來解決《計算機演算法設計與分析(第四版)》第二章課後作業的“半數集問題”,話不多說,上原始碼: 執行結果是兩個txt檔案。 請大家多多指點,謝謝! #include<stdio.h> #include<stdlib.h> int Han
計算機演算法設計與分析 (四) 貪心演算法--單源最短路徑
1.Dijkstra演算法是解決單源最短路徑的一個貪心演算法。給定一個帶權有向圖G=(V,E),其中每條邊的權都是非負實數,另外,還給定V中的一個頂點,稱為源。現在要計算源到其他各個頂點的最短路長度。這裡的路的長度指的是路上各邊權之和。 Dijkstra演算法可
8601 最大長方體問題(優先做) 時間限制:1000MS 記憶體限制:1000K 提交次數:950 通過次數:383 計算機演算法設計與分析 王曉東
題目 8601 最大長方體問題(優先做) 時間限制:1000MS 記憶體限制:1000K 提交次數:950 通過次數:383 題型: 程式設計題 語言: G++;GCC;VC Description 一個長,寬,高分別是m,n,p的長方體被分割成mnp個小
計算機演算法設計與分析之遞迴與分治策略——二分搜尋技術
遞迴與分治策略 二分搜尋技術 我們所熟知的二分搜尋演算法是運用分治策略的典型例子,針對這個演算法,先給出一個簡單的案例。 目的:給定已排好序的n個元素a[0:n-1],現要在這n個元素中找出一特定的元素x。 我們首先想到的最簡單的是用順序搜尋方法,逐個比較a[0:n-1]中元素,直至找出元
計算機演算法設計與分析觀後小總結
簡單略看了一遍王曉東的《計算機演算法設計與分析》,很多地方沒有細看,現在先做個小總結,方便以後回頭看的時候記憶起一些內容。 第二章:遞迴與分治策略 遞迴的概念: 直接或間接地呼叫自身的演算法稱為遞迴演算法。用函式自身給出定義的函式稱為遞迴函式。 分治法的基本思想: 分治法的
《計算機演算法設計與分析 第2版+第3版+第4版 (王曉東) 》原書附答案pdf版電子書附下載連結+30個總結JVM虛擬機器的技術文排版好(收藏版)
技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。 對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的
王曉東老師《計算機演算法設計與分析》棋盤覆蓋問題完整程式
說明:下面的程式對應於王曉東老師《計算機演算法設計與分析(第4版)》的棋盤覆蓋問題。其中chessBoard函式來自於王曉東老師的著作,本人編寫了display函式和main函式。#include <stdio.h> int board[8][8]; int ti
計算機演算法設計與分析——遞迴與分治策略(一)
遞迴: 直接或者間接地呼叫自身的演算法稱為遞迴。用函式自身給出定義的函式成為遞迴函式。 使用遞迴技術往往使函式的定義和演算法的描述簡潔且易於理解。有些資料結構,如二叉樹等,由於其本身固有的遞迴特性,特別適合用遞迴的形式來描述。另外,還有一些問題,雖然其本身沒
“計算機演算法設計與分析”期末考點以及應試思路-D_Dan
申明:純屬個人觀點,僅供大家參考,最後預祝大家取得好成績WINNER WINNER ,ALGORITHM IS FULL MARKS! 1、演算法是指解決問題的一種方法或一個過程。演算法是由若干條指令組成的有序序列。 2、演算法的性質 輸入:有零個或多個由外部提供的量作為
【演算法設計與分析作業題】第二週:1. Two Sum
題目 C++ solution class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { ve
演算法設計與分析作業1
35. Search Insert Position Description: Given a sorted array and a target value, return the index if the ta
演算法設計與分析第1章 演算法概述
第1章 演算法概述(窮舉演算法) 重要人物:Alan Turing(圖靈機)、Donald Knuth(TEX系統) 演算法:解決問題的一種方法或一個過程 特性:有窮性(Finiteness)、確定性(Definiteness)、可行性(effectivenes