cpm演算法
❶ 抖音的廣告怎麼投放抖音廣告怎麼投放價格怎麼在抖音上投放廣告
抖音APP的廣告現在是放在今日頭條的廣告後台上的,收費模式、價格及廣告精準定向跟今日頭條是統一的,只需要開通今日頭條廣告,在廣告後台自己設置投放就行
多個興趣扇面疊加在一起,即便只選擇一個興趣扇面投放廣告,但用戶的興趣是多個扇面,也有其他廣告主對用戶投放。實際的廣告出價、位置、點擊量等數據演算法更復雜。要根據投放經驗和當前數據綜合判斷。
❷ cpm是什麼意思
CPM在項目計劃管理方法中代表的是什麼意思?你們可曾接觸過?下面是我給大家整理的cpm是什麼意思,供大家參閱!
cpm是什麼意思
關鍵路徑法(Critical Path Method, CPM)是一種基於數學計算的項目計劃管理方法,是網路圖計劃方法的一種,屬於肯定型的網路圖。關鍵路徑法將項目分解成為多個獨立的活動並確定每個活動的工期,然後用邏輯關系(結束-開始、結束-結束、開始-開始和開始結束)將活動連接,從而能夠計算項目的工期、各個活動時間特點(最早最晚時間、時差)等。在關鍵路徑法的活動上載入資源後,還能夠對項目的資源需求和分配進行分析。關鍵路徑法是現代項目管理中最重要的一種分析工具。
CPM關鍵路徑法應用
在60年代初期,PERT的發展比較迅速,據統計,到1964年,關於PERT的參考書目和論文達到了1000多種。到1961年,各種基於PERT的類似的方法出現,如PERT/Cost,PERT-RAMPS(Resource Allocation & Multi-Project Schele),MAPS,SCANS,TOPS,PEP,TRACE,LESS和PAR等。其中PEP法是將甘特圖的活動賦以邏輯關系,這是計劃軟體一般採用的一種圖形輸出方法。1962年的時候,時任美國國防部長MacNamara在起草一項法令時,指出計劃評審法和關鍵路徑法同時並存的局面容易引起混淆,以後國防部的所有部門一律使用計劃評審法(PERT),這在當時對於關鍵路徑法的提倡者是一個重大打擊,不過在隨後的發展中,關鍵路徑法(CPM)逐漸佔了優勢,真正使用計劃評審法的其實已經很少。而且即使是在當時,很多所謂的計劃評審法(PERT),其實質其實是關鍵路徑法(CPM)。如美國航空局(NASA)當時使用的NASA-PERT,實際就是關鍵路徑法(CPM)。
無論是關鍵路徑法(CPM)還是計劃評審法(PERT),最初使用的表示方法都是箭線法(ADM),在之後很長的一段時間箭線法(ADM)都是人們主要使用的方法,直到70年代以後,前導圖(PDM)才開始逐漸流行起來,但是箭線法(ADM)仍然使用極為廣泛。在90年代以後,美國Primavera公司開發出其Windows版本的計劃管理軟體時,只採用前導圖(PDM)作為其計算平台,從根本上改變了這一局面,從此以後,前導圖(PDM)成了人們主要使用的方法,而箭線圖(ADM)則很少使用。
CPM關鍵路徑法時間計算
在進行計算時,箭線圖和前導圖的計算過程有所不同。
正推法
箭線圖(ADM)的計算一般有正推法(Forward Pass)和逆推法(Backward Pass)兩種,正推法用於計算活動和節點的最早時間,其演算法如下:
⒈設置箭線圖(ADM)中的第一個節點的時間,如設置為1。
⒉選擇一個開始於第一個節點的活動開始進行計算。⒊令活動最早開始時間等於其開始節點的最早時間。
⒋在選擇的活動的最早開始時間上加上其工期,就是其最早結束時間。
⒌比較此活動的最早結束時間和此活動結束節點的最早時間。如果結束節點還沒有設置時間,則此活動的最早結束時間就是該結束節點的最早時間;如果活動的結束時間比結束節點的最早時間大,則取此活動的最早結束時間作為節點的最早時間;如果此活動的最早結束時間小於其結束節點的最早時間,則保留此節點時間作為其最早時間。
⒍檢查是否還有其它活動開始於此節點,如果有,則回到步驟3進行計算;如果沒有,則進入下一個節點的計算,並回到步驟3開始,直到最後一個節點。
逆推法
活動和節點的最遲時間採用逆推法(Backward Pass)計算,逆推法(Backward Pass)一般從項目的最後一個活動開始計算,直到計算到第一個節點的時間為止,在逆推法的計算中,首先令最後一個節點的最遲時間等於其最早時間,然後開始計算,具體的計算步驟如下所示:
⒈設置最後一個節點的最遲時間,令其等於正推法計算出的最早時間。
⒉選擇一個以此節點為結束節點的活動進行計算。
⒊令此活動的最遲結束時間等於此節點的最遲時間。
⒋從此活動的最遲結束時間中減去其工期,得到其最遲開始時間。
⒌比較此活動的最遲開始時間和其開始節點的最遲時間,如果開始節點還沒有設置最遲時間,則將活動的最遲開始時間設置為此節點的最遲時間,如果活動的最遲開始時間早於節點的最遲時間,則將此活動的最遲開始時間設置為節點的最遲時間,如果活動的最遲開始時間遲於節點的最遲時間,則保留原節點的時間作為最遲時間
⒍檢查是否還有其它活動以此節點為結束節點,如果有則進入第二步計算,如果沒有則進入下一個節點,然後進入第二步計算,直至最後一個節點。
⒎第一個節點的最遲時間是本項目必須要開始的時間,假設取最後一個節點的最遲時間和最早時間相等,則其值應該等於1。
❸ 廣告中的CPM是怎麼計算出來的
千人價格(CPM)=(廣告費用/到達人數)×1000,其中廣告費用/到達人數通常以一個百分比的形式表示,在估算這個百分比時通常要考慮其廣告投入是全國性的還是地域性的,通常這兩者有較大的差別。
千人成本是一種媒體或媒體排期表(SCHEDULING)送達1000人或"家庭"的成本計算單位。這可用於計算任何媒體,任何人口統計群體及任何總成本。
它便利說明一種媒體與另一種媒體、一個媒體排期表與另一媒體排期表相對的成本。千人成本並非是廣告主衡量媒體的唯一標准,只是為了對不同媒體進行衡量不得已而制定的一個相對指標。衡量一個媒體價值的數字。
(3)cpm演算法擴展閱讀:
缺陷
1、不同媒體的「獨特性」
廣告公司更願意在同一媒體之內討論這個問題(如30秒鍾的有線電視廣告等於30秒鍾的普通電視廣告),而不願作跨媒體比較(如30秒鍾的有線廣告等於一個網上標題廣告)。
同樣是覆蓋千個群體,一次 30 秒電視廣告跟一個刊登在晚報上的平面廣告,或者是一幅張貼在商場大堂的海報所達到的廣告效果是截然不同的。
2、覆蓋率數字的不可靠性
國內仍以電視收視研究最為全面,可計算特定目標群體被覆蓋的人口數字。報刊平面廣告則只有 ACNielsen所提供的主要城市的分析。至於其他媒體覆蓋率的數字則大多是推算出來的約數(有些更由媒體提供),更別提按不同目標的受眾進行推算,對其准確性應有一定保留。
3、展露概念不明確
每千人成本准則採用的展露概念,只是潛在的展露,而不是實際的展露。當某一廣告刊登時,便可說有展露機會發生在所有受眾上,但事實上,僅有一部分人注意到該廣告,較少的人了解廣告信息的內容,更少的人才留下正確的印象。
❹ 網路搜索引擎廣告運作模式是什麼
搜索引擎分類
搜索引擎按其工作方式主要可分為三種,分別是全文搜索引擎(Full Text Search Engine)、目錄索引類搜索引擎(Search Index/Directory)和元搜索引擎(Meta Search Engine)。
全文搜索引擎
全文搜索引擎是名副其實的搜索引擎,國外具代表性的有Google、Fast/AllTheWeb、AltaVista、Inktomi、Teoma、WiseNut等,國內著名的有網路(Bai)。它們都是通過從互聯網上提取的各個網站的信息(以網頁文字為主)而建立的資料庫中,檢索與用戶查詢條件匹配的相關記錄,然後按一定的排列順序將結果返回給用戶,因此他們是真正的搜索引擎。
從搜索結果來源的角度,全文搜索引擎又可細分為兩種,一種是擁有自己的檢索程序(Indexer),俗稱「蜘蛛」(Spider)程序或「機器人」(Robot)程序,並自建網頁資料庫,搜索結果直接從自身的資料庫中調用,如上面提到的7家引擎;另一種則是租用其他引擎的資料庫,並按自定的格式排列搜索結果,如Lycos引擎。
目錄索引
目錄索引雖然有搜索功能,但在嚴格意義上算不上是真正的搜索引擎,僅僅是按目錄分類的網站鏈接列表而已。用戶完全可以不用進行關鍵詞(Keywords)查詢,僅靠分類目錄也可找到需要的信息。目錄索引中最具代表性的莫過於大名鼎鼎的Yahoo雅虎。其他著名的還有Open Directory Project(DMOZ)、LookSmart、About等。國內的搜狐、新浪、網易搜索也都屬於這一類。
元搜索引擎(META Search Engine)
元搜索引擎在接受用戶查詢請求時,同時在其他多個引擎上進行搜索,並將結果返回給用戶。著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等(元搜索引擎列表),中文元搜索引擎中具代表性的有搜星搜索引擎。在搜索結果排列方面,有的直接按來源引擎排列搜索結果,如Dogpile,有的則按自定的規則將結果重新排列組合,如Vivisimo。
除上述三大類引擎外,還有以下幾種非主流形式:
集合式搜索引擎:如HotBot在2002年底推出的引擎。該引擎類似META搜索引擎,但區別在於不是同時調用多個引擎進行搜索,而是由用戶從提供的4個引擎當中選擇,因此叫它「集合式」搜索引擎更確切些。
門戶搜索引擎:如AOL Search、MSN Search等雖然提供搜索服務,但自身即沒有分類目錄也沒有網頁資料庫,其搜索結果完全來自其他引擎。
免費鏈接列表(Free For All Links,簡稱FFA):這類網站一般只簡單地滾動排列鏈接條目,少部分有簡單的分類目錄,不過規模比起Yahoo等目錄索引來要小得多。
由於上述網站都為用戶提供搜索查詢服務,為方便起見,我們通常將其統稱為搜索引擎。
搜索引擎基本工作原理
了解搜索引擎的工作原理對我們日常搜索應用和網站提交推廣都會有很大幫助。
全文搜索引擎
在搜索引擎分類部分我們提到過全文搜索引擎從網站提取信息建立網頁資料庫的概念。搜索引擎的自動信息搜集功能分兩種。一種是定期搜索,即每隔一段時間(比如Google一般是28天),搜索引擎主動派出「蜘蛛」程序,對一定IP地址范圍內的互聯網站進行檢索,一旦發現新的網站,它會自動提取網站的信息和網址加入自己的資料庫。
另一種是提交網站搜索,即網站擁有者主動向搜索引擎提交網址,它在一定時間內(2天到數月不等)定向向你的網站派出「蜘蛛」程序,掃描你的網站並將有關信息存入資料庫,以備用戶查詢。由於近年來搜索引擎索引規則發生了很大變化,主動提交網址並不保證你的網站能進入搜索引擎資料庫,因此目前最好的辦法是多獲得一些外部鏈接,讓搜索引擎有更多機會找到你並自動將你的網站收錄。
當用戶以關鍵詞查找信息時,搜索引擎會在資料庫中進行搜尋,如果找到與用戶要求內容相符的網站,便採用特殊的演算法——通常根據網頁中關鍵詞的匹配程度,出現的位置/頻次,鏈接質量等——計算出各網頁的相關度及排名等級,然後根據關聯度高低,按順序將這些網頁鏈接返回給用戶。
目錄索引
與全文搜索引擎相比,目錄索引有許多不同之處。
首先,搜索引擎屬於自動網站檢索,而目錄索引則完全依賴手工操作。用戶提交網站後,目錄編輯人員會親自瀏覽你的網站,然後根據一套自定的評判標准甚至編輯人員的主觀印象,決定是否接納你的網站。
其次,搜索引擎收錄網站時,只要網站本身沒有違反有關的規則,一般都能登錄成功。而目錄索引對網站的要求則高得多,有時即使登錄多次也不一定成功。尤其象Yahoo!這樣的超級索引,登錄更是困難。(由於登錄Yahoo!的難度最大,而它又是商家網路營銷必爭之地,所以我們會在後面用專門的篇幅介紹登錄Yahoo雅虎的技巧)
此外,在登錄搜索引擎時,我們一般不用考慮網站的分類問題,而登錄目錄索引時則必須將網站放在一個最合適的目錄(Directory)。
最後,搜索引擎中各網站的有關信息都是從用戶網頁中自動提取的,所以用戶的角度看,我們擁有更多的自主權;而目錄索引則要求必須手工另外填寫網站信息,而且還有各種各樣的限制。更有甚者,如果工作人員認為你提交網站的目錄、網站信息不合適,他可以隨時對其進行調整,當然事先是不會和你商量的。
目錄索引,顧名思義就是將網站分門別類地存放在相應的目錄中,因此用戶在查詢信息時,可選擇關鍵詞搜索,也可按分類目錄逐層查找。如以關鍵詞搜索,返回的結果跟搜索引擎一樣,也是根據信息關聯程度排列網站,只不過其中人為因素要多一些。如果按分層目錄查找,某一目錄中網站的排名則是由標題字母的先後順序決定(也有例外)。
目前,搜索引擎與目錄索引有相互融合滲透的趨勢。原來一些純粹的全文搜索引擎現在也提供目錄搜索,如Google就借用Open Directory目錄提供分類查詢。而象 Yahoo! 這些老牌目錄索引則通過與Google等搜索引擎合作擴大搜索范圍。在默認搜索模式下,一些目錄類搜索引擎首先返回的是自己目錄中匹配的網站,如國內搜狐、新浪、網易等;而另外一些則默認的是網頁搜索,如Yahoo。
搜索引擎的第三定律
搜索引擎走到今天,已經是一個結束過去,開辟未來的時候了。為了說清楚我所講的第三定律,我們先來回顧一下第一和第二定律。
第一定律 相關性定律
聽起來象是一篇學術論文,的確,就連第一,第二定律的提法以前也沒有過,但是第一,第二定律的內容確早已在業界和學術界得到了公認。其實這第一定律是早在互聯網出現之前就被學術界廣泛研究過的,那就是所謂的相關性定律。這個領域那時叫情報檢索,或信息檢索,也有叫全文檢索的。
那時的相關性都是基於詞頻統計的,也就是說,當用戶輸入檢索詞時,搜索引擎去找那些檢索詞在文章(網頁)中出現頻率較高的,位置較重要的,再加上一些對檢索詞本身常用程度的加權,最後排出一個結果來(檢索結果頁面) 。早期的搜索引擎結果排序都是基於本文的第一定律的,如Infoseek,Excite,Lycos等,它們基本上是沿用了網路時代之前學術界的研究成果,工業界的主要精力放在處理大訪問量和大數據量上,對相關性排序沒有突破。
詞頻統計其實根本沒有利用任何跟網路有關的特性,是前網路時代的技術。然而,網路時代的主要文獻是以網頁的形式存在的,而幾乎每個人都可以隨心所欲地在網上發表各種內容,詞頻相同的兩個網頁,質量相差可以很遠,可是按照搜索引擎的第一定律,對這兩個網頁的排序應該是一樣的。為了能夠派在某些檢索結果的前幾位,許多網頁內容的製作者絞盡腦汁,在其頁面上堆砌關鍵詞,搜索引擎對此防不勝防,苦不堪言。這種情況到了 1996年開始有了改變。
第二定律 人氣質量定律
1996年4月,我到賭城拉斯維加斯開一個有關信息檢索方面的學術會議,會議的內容就象拉斯維加斯的天氣一樣,照例比較枯燥乏味。但遠離公司的我,卻難得有一個靜下心來認真思考問題的機會。就在聽一個毫不相乾的論文演講的時候,我突然把科學引文索引的機制跟Web上的超級鏈接聯系起來了 - 感謝北大,她在我上大三的時候就教授了我科學引文索引的機制,美國恐怕沒有一所大學會在你本科的時候教這玩藝兒。
科學引文索引的機制,說白了就是誰的論文被引用次數多,誰就被認為是權威,論文就是好論文。這個思路移植到網上就是誰的網頁被鏈接次數多,那個網頁就被認為是質量高,人氣旺。在加上相應的鏈接文字分析,就可以用在搜索結果的排序上了。這就引出了搜索引擎的第二定律:人氣質量定律。根據這一定律,搜索結果的相關性排序,並不完全依賴於詞頻統計,而是更多地依賴於超鏈分析。
我意識到這是一個突破性的東西,回去以後就很快總結了思路,於96年6月申請了這一方面的美國專利。1999年 7月6號,美國專利和商標局批准了專利號為5,920,859的,以我為唯一發明人的專利。大約在96年底,斯坦福大學計算機系的兩位研究生也想到了同樣的解決方法,他們後來創立了一個叫Google的搜索引擎,Google的網站上至今仍然說他們的這項技術是Patent-pending (專利申請中) ,不知道美國專利局是不是還會再批這樣的專利。Anyway, 超鏈分析的方法98年以後逐漸被各大搜索引擎所接受,由於鏈接是網路內容的一個根本特性,這時候的搜索引擎才開始真正利用網路時代的檢索技術。
世事難料,2000年起網路泡沫迅速破滅,各大搜索引擎要麼遭人收購,要麼推遲上市,所有使用人氣質量定律的搜索引擎公司都未能倖免。那麼,搜索引擎的出路到底在哪兒?
第三定律 自信心定律
人氣質量定律解決的還是一個技術層面的問題,然而搜索引擎從誕生的那一天起,從來就不是一個純技術現像,它融合了技術,文化,市場等各個層面的因素。解決搜索引擎公司的生存和發展問題需要搜索引擎的第三定律--自信心定律。
1998年的時候,沒有太多的人拿一家遠在矽谷500英里以外,剛剛成立的,叫作GoTo.com(現已更名為Overture)的公司當回事兒。它不過是買了一個搜索引擎的技術服務,然後再向那些網站的擁有者們拍賣他們網站在GoTo檢索結果中的排名,誰付的錢多,誰的網站就排在前面,而且付費是根據網民點擊該網站的情況來計算的,僅僅在搜索結果中出現並不需要付費。這就是自信心定律的最早實踐者!根據這一定律,搜索結果的相關性排序,除了詞頻統計和超鏈分析之外,更注重的是競價拍賣。誰對自己的網站有信心,誰就排在前面。有信心的表現就是願意為這個排名付錢。需要聲明的是,自信心定律也是我自己給這一模式起的名字,以前的文獻中並沒有人這樣總結過。
今天,在網路業一片蕭條,那斯達克風聲鶴唳的時候,GoTo卻如日中天,市值高達13億美金,收入高達雅虎總收入的35%。反觀門戶網站,有哪一個能從它們的搜索引擎服務中賺出總收入的三分之一呢?究其原因,就是因為GoTo最早實踐了搜索引擎的自信心定律。以前的搜索引擎都是靠CPM來收費的,而CPM是從傳統廣告業借鑒過來的,沒有考慮網路媒體即時性,交互性,易競價的特點,而競價排名,點擊收費則是為網站擁有者直接提供銷售線索,而不是傳統意義上的廣告宣傳。自信心定律一改過去搜索引擎靠CPM收錢的尷尬局面,開創了真正屬於互聯網的收費模式。
總的說,網路搜索引擎廣告就是在網路或者是谷歌上購買關鍵字,來進行競價排名。
❺ 如何計算CPM(每千人廣告瀏覽費)
CPM不用計算,是明確標價的。
廣告主為它的廣告顯示1000次所付的費用;如果一個Banner廣告單價是¥10/CPM,意味著每被1000人次看到就收¥10;如此類推,每10000人次看到就是¥100;CPM是評估廣告效果的指標之一。
可用於計算任何媒體,任何人口統計群體及任何總成本。它便利說明一種媒體與另一種媒體、一個媒體排期表與另一媒體排期表相對的成本。
(5)cpm演算法擴展閱讀
每千人成本准則採用的展露概念,只是潛在的展露,而不是實際的展露。當某一廣告刊登時,便可說有展露機會發生在所有受眾上,但事實上,僅有一部分人注意到該廣告,較少的人了解廣告信息的內容,更少的人才留下正確的印象。
所以,最全部的計算單位是目標受眾的人數,而不是所有受眾的總人數。這些目標受眾不僅看到廣告,而且被該廣告所刺激。可是,這種單位的人數根本不可能估計出來。
千人成本忽略了不同媒體之間的印象與影響力等質上的差別。
即使兩種媒體擁有同等數量的目標購買者,但在甲媒體(如霓虹燈)上做廣告可能會比在乙媒體(宣傳海報)上做廣告更令人信服,更有名貴感,或在其他方面有更高的質量,這很可能就是由於甲媒體的設計質量及製作質量比乙媒體好。
❻ 廣告投放中dcpm演算法是什麼意思
DSP普遍採用dCPM作為結算體系,dCPM指的是dynamic CPM,與目前網路廣告市場長講的CPM方式(此CPM相應的成為flat CPM)區別。dCPM基於RTB技術誕生,指的是每一次的impression出價是變化的。其每次出價均依據廣告主廣告投放的效果來實時計算,以得出對廣告主最有利的價格,從而保證了廣告主的利益。同時又因為以impression與媒體結算,也確保了媒體的收益。
❼ 求如下有向圖的關鍵路徑以及任意兩點之間的最短距離
用CPM演算法求有向圖的關鍵路徑和用Dijkstra演算法求有向圖的最短路徑的C語言程序如下
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#define MAX 20
#define INF 32767 // 此處修改最大值
#define nLENGTH(a) (sizeof(a)/sizeof(a[0]))
#define eLENGTH(a) (sizeof(a)/sizeof(char))/(sizeof(a[0])/sizeof(char))
typedef struct _graph{
char vexs[MAX]; // 頂點集合
int vexnum; // 頂點數
int edgnum; // 邊數
int matrix[MAX][MAX]; // 鄰接矩陣
}Graph, *PGraph;
// 邊的結構體
typedef struct _EdgeData{
char start; // 邊的起點
char end; // 邊的終點
int weight; // 邊的權重
}EData;
//指向節點的位置
int point_node(PGraph g,char c){
for(int i=0;i<g->vexnum;i++){
if(g->vexs[i]==c){
return i;
}
}
return -1;
}
PGraph create_graph(int b[][3],char a[],int n,int e){
char c1,c2; //邊的2個頂點
PGraph g; //矩陣
g=(PGraph)malloc(sizeof(Graph));
//memset()第一個參數 是地址,第二個參數是開辟空間的初始值,第三個參數是開辟空間的大小
memset(g, 0, sizeof(Graph));
printf("頂點個數: ");//頂點數
g->vexnum=n;
printf("%d ",g->vexnum);
printf("邊個數: ");//邊數
g->edgnum=e;
printf("%d ",g->edgnum);
//初始化頂點
for(int j=0;j<g->vexnum;j++){
g->vexs[j]=a[j];
}
for(int i=0;i<g->edgnum;i++){
int p1,p2;
c1=char(b[i][0]);
c2=char(b[i][1]);
p1=point_node(g, c1);
p2=point_node(g, c2);
if (p1==-1 || p2==-1){
printf("input error: invalid edge! ");
free(g);
continue;
}
g->matrix[p1][p2]=b[i][2];
}
for(int i=0;i<g->vexnum;i++){
for(int j=0;j<g->vexnum;j++){
if(g->matrix[i][j]==0)
g->matrix[i][j]=INF;
}
}
return g;
}
//關鍵路徑的最短時間
//關鍵路徑法(Critical Path Method,CPM)
void CPM_road(PGraph g){
int i,j;
int a[MAX]={0},b[MAX]={-10};
int max=0;//最長路徑
for( i=0;i<g->vexnum;i++){//列數遍歷
for( j=0;j<g->vexnum;j++){//行數遍歷
//如果g->matrix[j][i]大於0,說明此頂點有前頂點,由前邊的遍歷可知,前頂點的最長路徑a[j],
//加上g->matrix[j][i]的路徑就是當前a[i]的路徑
if(g->matrix[j][i]!=INF && g->matrix[j][i]+a[j]>max){
max=g->matrix[j][i]+a[j];
a[i]=max;
}
}
max=0;
}
//顯示最長路徑
printf("第一個頂點到每一個頂點的最長路徑:");
printf(" ");
for(i=0;i<g->vexnum;i++){
printf("V%d ",i+1);
}
printf(" ");
for(i=0;i<g->vexnum;i++){
printf("%d ",a[i]);
}
printf(" ");
printf("最後一個頂點到每個頂點的最長路徑:");
for( i=g->vexnum-1;i>=0;i--){ //列數遍歷
for( j=g->vexnum-1;j>=0;j--){ //行數遍歷
//如果g->matrix[j][i]大於0,說明此頂點有前頂點,由前邊的遍歷可知,前頂點的最長路徑a[j],
//加上g->matrix[j][i]的路徑就是當前a[i]的路徑
if(g->matrix[i][j]!=INF && g->matrix[i][j]+b[j]>max){
max=g->matrix[i][j]+b[j];
b[i]=max;
}
}
max=0;
}
//顯示最長路徑
printf(" ");
for(i=0;i<g->vexnum;i++){
printf("V%d ",i+1);
}
printf(" ");
for(i=0;i<g->vexnum;i++){
printf("%d ",b[i]);
}
printf(" ");
printf("關鍵路徑: ");
for(i=0;i<g->vexnum;i++){
if(a[i]==a[g->vexnum-1]-b[i]){
printf("V%c ",g->vexs[i]);
}
}
printf(" ");
}
void print_shortest_path(PGraph g,int* distance,int* path,int* used,int start,int end){
// 輸出最短距離並列印最短路徑
int i = 0, pre, inverse_path[g->vexnum];
char s1[3],s2[3];
sprintf(s1, "V%d", (start+1));
sprintf(s2, "V%d", (end+1));
printf("從%s頂點到%s頂點的最短距離: %d ", s1, s2, distance[end]);
inverse_path[i] = end;
pre = path[end];
if(pre == -1){
printf("沒有通路! ");
}else{
while(pre != start){
inverse_path[++i] = pre;
pre = path[pre];
}
inverse_path[++i] = start;
printf("從%s頂點到%s頂點的最短路徑: ", s1, s2);
for(; i > 0; i--){
sprintf(s1, "V%d", (inverse_path[i]+1));
printf("%s -> ", s1);
}
sprintf(s1, "V%d", (inverse_path[i]+1));
printf("%s ", s1);
}
return;
}
void shortest_path(PGraph g,int start, int end){ // 基於Dijkstra演算法的最短路徑函數
int distance[g->vexnum]; // 用於存放起始點到其餘各點的最短距離
int path[g->vexnum]; // 用於存放起始點到其餘各點最短路徑的前一個頂點
int used[g->vexnum] = { 0 }; // 用於標記該頂點是否已經找到最短路徑
int i, j, min_node, min_dis, pass_flag = 0;
for(i = 0; i < g->vexnum; i++){
distance[i] = g->matrix[start][i]; // 初始化距離數組
if(g->matrix[start][i] < INF){
path[i] = start; // 初始化路徑數組
}else{
path[i] = -1;
}
}
used[start] = 1;
path[start] = start;
for(i = 0; i < g->vexnum; i++){
min_dis = INF;
for(j = 0; j < g->vexnum; j++){
if(used[j] == 0 && distance[j] < min_dis){
min_node = j;
min_dis = distance[j];
pass_flag++; // 標記是否存在通路
}
}
if(pass_flag != 0){
used[min_node] = 1;
for(j = 0; j < g->vexnum; j++){
if(used[j] == 0){
if(g->matrix[min_node][j] < INF && distance[min_node] + g->matrix[min_node][j] < distance[j]){
distance[j] = distance[min_node] + g->matrix[min_node][j];
path[j] = min_node;
}
}
}
}
}
print_shortest_path(g,distance, path, used, start, end);
return;
}
int main(){
int i,j;
PGraph gp;
char a[]={'1', '2', '3', '4', '5', '6', '7'};
int b[][3]={{'1', '2',3},
{'1', '3',2},
{'1', '4',6},
{'2', '4',2},
{'2', '5',4},
{'3', '4',1},
{'3', '6',3},
{'4', '5',1},
{'5', '7',3},
{'6', '7',4}};
int n=nLENGTH(a);
int e=eLENGTH(b);
gp=create_graph(b,a,n,e);
//列印鄰接矩陣
printf("鄰接矩陣: ");
for (i = 0; i < gp->vexnum; i++){
for (j = 0; j < gp->vexnum; j++)
printf("%d ", gp->matrix[j][i]);
printf(" ");
}
CPM_road(gp);
printf(" ");
for(i=0;i<gp->vexnum;i++){
for(j=0;j<gp->vexnum;j++){
if(i!=j)
shortest_path(gp,i, j);
}
}
return 0;
}
運行結果
❽ PERT圖與甘特圖的區別
gantt圖又叫甘特圖。
進度是按時間順序計劃活動的一個列表,我們稱之為Gantt圖,它有以下幾個關鍵的成分:
1.橫跨圖頂部排列的是日歷表。
2.最左邊的一列包含了每項任務的標識號(ID)。
3.左邊第二列是要做的任務的名稱。
4.在圖表當中,任務條表示各項任務計劃的開始和結束時間。
5.在表的左下方是項目名稱、進度表的作者和制訂此進度的原始日期。
Gantt圖是展現項目中各個任務進展狀況的一種有用的工具。這種圖表對於協調多種活動特別有用。
PERT(計劃評審技術)--利用項目的網路圖和各活動所需時間的估計值(通過加權平均得到的)去計算項目總時間。PERT不同於CPM的主要點在於PERT利用期望值而不是最可能的活動所需時間估計(在CPM法中用的)。PERT法如今很少應用,然類似PETR的估計方法常在CPM法中應用。
關鍵路線法(CPM)--藉助網路圖和各活動所需時間(估計值),計算每一活動的最早或最遲開始和結束時間。CPM法的關鍵是計算總時差,這樣可決定哪一活動有最小時間彈性。CPM演算法也在其它類型的數學分析中得到應用。
在PERT/CPM圖中,一般包括以下的要素:任務 、 里程碑或開始和結束事件 、 任務間的依賴關系
一個PERT圖顯示了一個項目的圖形解釋,這種圖是網路裝的,由號碼標記的節點組成,節點由帶標簽的帶方向箭頭的線段連接,展現項目中的事件或轉折點,以及展現項目中的任務。帶方向箭頭的線段表示任務的先後順序。例如,在PERT圖中,在節點1,2,4,8和10之間的任務必須按順序完成,這叫做系列任務的依存性。
❾ 淘寶開鑽石展位,裡面選擇按點擊收費還是選擇按展現收費呢有什麼區別
淘寶鑽石展位根據用戶自身需求選擇點擊收費或展現收費,兩者的區別如下:
1、定義不同:
(1)按點擊收費(CPC):按照CPC競價收費,展現免費,點擊收費。
(2)按展現收費(CPM):按照CPM競價收費,按照每千次展現收費,點擊不收費。
2、展示條件不同:
(1)按點擊收費(CPC):點擊成本可控,折算後的CPM出價與其他商家進行競爭,價格高的優先展示。
(2)按展現收費(CPM):精準化圈定人群, 按照競價高低進行排名,價高者優先展現。
3、收費演算法不同:
(1)按點擊收費(CPC):公式CPM=CPC*CTR*1000。競價成功後,按照下一名CPM結算價格+0.1元作為實際扣費的CPM價格,根據公式換算成點擊扣費CPC。根據公式CPM=CPC*CTR*1000,推算出CPC=CPM/1000/CTR。
(2)按展現收費(CPM):實際扣費=按照下一名CPM結算價格+0.1。