强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁(yè) > 資訊 > 經(jīng)驗(yàn) > 深度優(yōu)先算法,dfs是什么

深度優(yōu)先算法,dfs是什么

來(lái)源:整理 時(shí)間:2023-09-04 07:24:02 編輯:智能門(mén)戶(hù) 手機(jī)版

本文目錄一覽

1,dfs是什么

DFS(Depth-First-Search)深度優(yōu)先搜索算法,是搜索算法的一種。是一種在開(kāi)發(fā)爬蟲(chóng)早期使用較多的方法。它的目的是要達(dá)到被搜索結(jié)構(gòu)的葉結(jié)點(diǎn) 。

dfs是什么

2,圖的深度優(yōu)先搜索算法dfs函數(shù)里面firstadjvex是什么意思

FirstAdiVex(G,v);初始條件:圖G存在,v是G中某個(gè)頂點(diǎn)。操作結(jié)果:返回v的第一個(gè)領(lǐng)接頂點(diǎn),若定點(diǎn)在G中沒(méi)有領(lǐng)接頂點(diǎn),則返回空。
同學(xué),是不是你沒(méi)看出來(lái)這是人家自己命名 的一個(gè)變量或者方法名,又或者是類(lèi)名
深度優(yōu)先搜索算法表示先從當(dāng)前節(jié)點(diǎn)的第一條未訪問(wèn)的邊開(kāi)始遍歷再看看別人怎么說(shuō)的。

圖的深度優(yōu)先搜索算法dfs函數(shù)里面firstadjvex是什么意思

3,深度優(yōu)先搜索和廣度優(yōu)先搜索A星算法三種算法的區(qū)別和聯(lián)系 搜

在說(shuō)它之前先提提狀態(tài)空間搜索.狀態(tài)空間搜索,如果按專(zhuān)業(yè)點(diǎn)的說(shuō)法就是將問(wèn)題求解過(guò)程表現(xiàn)為從初始狀態(tài)到目標(biāo)狀態(tài)尋找這個(gè)路徑的過(guò)程.通俗點(diǎn)說(shuō),就是 在解一個(gè)問(wèn)題時(shí),找到一條解題的過(guò)程可以從求解的開(kāi)始到問(wèn)題的結(jié)果(好象并不通俗哦).由于求解問(wèn)題的過(guò)程中分枝有很多,定性,不完備性造成的,使得求解的路徑很多這就構(gòu)成了一個(gè)圖,我們說(shuō)這個(gè)圖就是狀態(tài)空間.問(wèn)題的求解實(shí)際上就是在這個(gè)圖中找到一條路徑可以從開(kāi)始到結(jié)果.這個(gè)尋找的過(guò)程就是狀態(tài)空間搜索.

深度優(yōu)先搜索和廣度優(yōu)先搜索A星算法三種算法的區(qū)別和聯(lián)系  搜

4,數(shù)據(jù)結(jié)構(gòu)中寬度優(yōu)先搜索是廣度優(yōu)先還是深度優(yōu)先搜索

廣度
(一)深度優(yōu)先搜索的特點(diǎn)是: (1)從上面幾個(gè)實(shí)例看出,可以用深度優(yōu)先搜索的方法處理的題目是各種 各樣的。 有的搜索深度是已知和固定的,如例題2-4,2-5,2-6;有的是未知的,如例題2-7、例題2-8; 有的搜索深度是有限制的,但達(dá)到目標(biāo)的深度是不定的。 但也看到,無(wú)論問(wèn)題的內(nèi)容和性質(zhì)以及求解要求如何不同,它們的程序結(jié)構(gòu) 都是相同的,即都是深度優(yōu)先算法(一)和深度優(yōu)先算法(二)中描述的算法結(jié) 構(gòu),不相同的僅僅是存儲(chǔ)結(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)和產(chǎn)生規(guī)則以及輸出要求。 (2)深度優(yōu)先搜索法有遞歸以及非遞歸兩種設(shè)計(jì)方法。一般的,當(dāng)搜索深度較小、問(wèn)題遞歸方式比較明顯時(shí),用遞歸方法設(shè)計(jì)好,它可以使得程序結(jié)構(gòu)更簡(jiǎn)捷易懂。當(dāng)搜索深度較大時(shí),如例題2-5、2-6。當(dāng)數(shù)據(jù)量較大時(shí),由于系統(tǒng)堆棧容量的限制,遞歸容易產(chǎn)生溢出,用非遞歸方法設(shè)計(jì)比較好。 (3)深度優(yōu)先搜索方法有廣義和狹義兩種理解。廣義的理解是,只要最新產(chǎn)生的結(jié)點(diǎn)(即深度最大的結(jié)點(diǎn))先進(jìn)行擴(kuò)展的方法,就稱(chēng)為深度優(yōu)先搜索方法。在這種理解情況下,深度優(yōu)先搜索算法有全部保留和不全部保留產(chǎn)生的結(jié)點(diǎn)的兩種情況。而狹義的理解是,僅僅只保留全部產(chǎn)生結(jié)點(diǎn)的算法。本書(shū)取前一種廣義的理解。 不保留全部結(jié)點(diǎn)的算法屬于一般的回溯算法范疇。 保留全部結(jié)點(diǎn)的算法, 實(shí)際上是在數(shù)據(jù)庫(kù)中產(chǎn)生一個(gè)結(jié)點(diǎn)之間的搜索樹(shù), 因此也屬于圖搜索算法的范疇。 (4)不保留全部結(jié)點(diǎn)的深度優(yōu)先搜索法,由于把擴(kuò)展望的結(jié)點(diǎn)從數(shù)據(jù)庫(kù)中彈出刪除,這樣,一般在數(shù)據(jù)庫(kù)中存儲(chǔ)的結(jié)點(diǎn)數(shù)就是深度值,因此它占用的空間較少,所以,當(dāng)搜索樹(shù)的結(jié)點(diǎn)較多,用其他方法易產(chǎn)生內(nèi)存溢出時(shí),深度優(yōu)先搜索不失為一種有效的算法。 (5)從輸出結(jié)果可看出,深度優(yōu)先搜索找到的第一個(gè)解并不一定是最優(yōu)解。例如例題2-8得最優(yōu)解為13,但第一個(gè)解卻是17。如果要求出最優(yōu)解的話(huà),一種方法將是后面要介紹的動(dòng)態(tài)規(guī)劃法,另一種方法是修改原算法:把原輸出過(guò)程的地方改為記錄過(guò)程,即記錄達(dá)到當(dāng)前目標(biāo)的路徑和相應(yīng)的路程值,并與前面已記錄的值進(jìn)行比較,保留其中最優(yōu)的,等全部搜索完成后,才把保留的最優(yōu)解輸出。 二、廣度優(yōu)先搜索法的顯著特點(diǎn)是: (1)在產(chǎn)生新的子結(jié)點(diǎn)時(shí),深度越小的結(jié)點(diǎn)越先得到擴(kuò)展,即先產(chǎn)生它的子結(jié)點(diǎn)。為使算法便于實(shí)現(xiàn),存放結(jié)點(diǎn)的數(shù)據(jù)庫(kù)一般用隊(duì)列的結(jié)構(gòu)。 (2)無(wú)論問(wèn)題性質(zhì)如何不同,利用廣度優(yōu)先搜索法解題的基本算法是相同的,但數(shù)據(jù)庫(kù)中每一結(jié)點(diǎn)內(nèi)容,產(chǎn)生式規(guī)則,根據(jù)不同的問(wèn)題,有不同的內(nèi)容和結(jié)構(gòu),就是同一問(wèn)題也可以有不同的表示方法。 (3)當(dāng)結(jié)點(diǎn)到跟結(jié)點(diǎn)的費(fèi)用(有的書(shū)稱(chēng)為耗散值)和結(jié)點(diǎn)的深度成正比時(shí),特別是當(dāng)每一結(jié)到根結(jié)點(diǎn)的費(fèi)用等于深度時(shí),用廣度優(yōu)先法得到的解是最優(yōu)解,但如果不成正比,則得到的解不一定是最優(yōu)解。這一類(lèi)問(wèn)題要求出最優(yōu)解,一種方法是使用后面要介紹的其他方法求解,另外一種方法是改進(jìn)前面深度(或廣度)優(yōu)先搜索算法:找到一個(gè)目標(biāo)后,不是立即退出,而是記錄下目標(biāo)結(jié)點(diǎn)的路徑和費(fèi)用,如果有多個(gè)目標(biāo)結(jié)點(diǎn),就加以比較,留下較優(yōu)的結(jié)點(diǎn)。把所有可能的路徑 都搜索完后,才輸出記錄的最優(yōu)路徑。 (4)廣度優(yōu)先搜索算法,一般需要存儲(chǔ)產(chǎn)生的所有結(jié)點(diǎn),占的存儲(chǔ)空間要比深度優(yōu)先大得多,因此程序設(shè)計(jì)中,必須考慮溢出和節(jié)省內(nèi)存空間得問(wèn)題。 (5)比較深度優(yōu)先和廣度優(yōu)先兩種搜索法,廣度優(yōu)先搜索法一般無(wú)回溯操作,即入棧和出棧的操作,所以運(yùn)行速度比深度優(yōu)先搜索算法法要快些。 總之,一般情況下,深度優(yōu)先搜索法占內(nèi)存少但速度較慢,廣度優(yōu)先搜索算法占內(nèi)存多但速度較快,在距離和深度成正比的情況下能較快地求出最優(yōu)解。因此在選擇用哪種算法時(shí),要綜合考慮。決定取舍

5,深度優(yōu)先搜索法和廣度優(yōu)先搜索法

深度優(yōu)先搜索所遵循的搜索策略是盡可能“深”地搜索圖。在深度優(yōu)先搜索中,對(duì)于最新發(fā)現(xiàn)的結(jié)點(diǎn),如果它還有以此為起點(diǎn)而未搜過(guò)的邊,就沿著邊繼續(xù)搜索下去。當(dāng)結(jié)點(diǎn)v的所有邊都已被探尋過(guò),搜索將回溯到發(fā)現(xiàn)結(jié)點(diǎn)v有那條邊的始結(jié)點(diǎn)。這一過(guò)程一直進(jìn)行到已發(fā)現(xiàn)從源結(jié)點(diǎn)可達(dá)的所有結(jié)點(diǎn)為止。如果還存在未被發(fā)現(xiàn)的結(jié)點(diǎn),則選擇其中一個(gè)作為源結(jié)點(diǎn)并重復(fù)以上過(guò)程,整個(gè)過(guò)程反復(fù)進(jìn)行直到所有結(jié)點(diǎn)都被發(fā)現(xiàn)為止。深度優(yōu)先搜索基本算法如下PROCEDURE dfs_try(i); FOR i:=1 to maxr DO BEGIN IF 子結(jié)點(diǎn) mr 符合條件 THEN BEGIN 產(chǎn)生的子結(jié)點(diǎn)mr入棧; IF 子結(jié)點(diǎn)mr是目標(biāo)結(jié)點(diǎn) THEN 輸出 ELSE dfs_try(i+1); 棧頂元素出棧; END; END; 寬度優(yōu)先搜索算法(又稱(chēng)廣度優(yōu)先搜索算法)是最簡(jiǎn)單的圖的搜索算法之一,這一算法也是很多重要的圖的算法的原型。Dijksta單源最短路徑算法和Prim最小生成樹(shù)算法都采用了與寬度優(yōu)先搜索類(lèi)似的思想。 寬度優(yōu)先搜索的核心思想是:從初始結(jié)點(diǎn)開(kāi)始,應(yīng)用算符生成第一層結(jié)點(diǎn),檢查目標(biāo)結(jié)點(diǎn)是否在這些后繼結(jié)點(diǎn)中,若沒(méi)有,再用產(chǎn)生式規(guī)則將所有第一層的結(jié)點(diǎn)逐一擴(kuò)展,得到第二層結(jié)點(diǎn),并逐一檢查第二層結(jié)點(diǎn)中是否包含目標(biāo)結(jié)點(diǎn)。若沒(méi)有,再用算符逐一擴(kuò)展第二層所有結(jié)點(diǎn)……,如此依次擴(kuò)展,直到發(fā)現(xiàn)目標(biāo)結(jié)點(diǎn)為止。寬度優(yōu)先搜索基本算法如下:list[1]:=source; head:=0; foot:=1; REPEAT head:=head+1; FOR x:=1 to 規(guī)則數(shù) DO BEGIN 根據(jù)規(guī)則產(chǎn)生新結(jié)點(diǎn)nw; IF not_appear(nw,list) THEN BEGIN foot:=foot+1; list[foot]:=nw; list[foot].father:=head; IF list[foot]=目標(biāo)結(jié)點(diǎn) THEN 輸出; END; END;UNTIL head>foot; {隊(duì)列為空表明再無(wú)結(jié)點(diǎn)可擴(kuò)展}
c#)圖的深度優(yōu)先搜索publicvoiddfstraverse()//深度優(yōu)先遍歷initvisited();//將visited標(biāo)志全部置為falsedfs(items[0]);//從第一個(gè)頂點(diǎn)開(kāi)始遍歷} privatevoiddfs(vertexv)//使用遞歸進(jìn)行深度優(yōu)先遍歷 { v.visited=true;//將訪問(wèn)標(biāo)志設(shè)為true console.write(v.data+"");//訪問(wèn) nodenode=v.firstedge; while(node!=null)//訪問(wèn)此頂點(diǎn)的所有鄰接點(diǎn) { //如果鄰接點(diǎn)未被訪問(wèn),則遞歸訪問(wèn)它的邊 if(!node.adjvex.visited) { dfs(node.adjvex);//遞歸 } node=node.next;//訪問(wèn)下一個(gè)鄰接點(diǎn) } } privatevoidinitvisited()//初始化visited標(biāo)志 { foreach(vertexvinitems) { v.visited=false;//全部置為false } } c#)圖的廣度優(yōu)先搜索 publicvoidbfstraverse()//廣度優(yōu)先遍歷 { initvisited();//將visited標(biāo)志全部置為false bfs(items[0]);//從第一個(gè)頂點(diǎn)開(kāi)始遍歷 } privatevoidbfs(vertexv)//使用隊(duì)列進(jìn)行廣度優(yōu)先遍歷 { //創(chuàng)建一個(gè)隊(duì)列 queue>queue=newqueue>(); console.write(v.data+"");//訪問(wèn) v.visited=true;//設(shè)置訪問(wèn)標(biāo)志 queue.enqueue(v);//進(jìn)隊(duì) while(queue.count>0)//只要隊(duì)不為空就循環(huán) { vertexw=queue.dequeue(); nodenode=w.firstedge; while(node!=null)//訪問(wèn)此頂點(diǎn)的所有鄰接點(diǎn) { //如果鄰接點(diǎn)未被訪問(wèn),則遞歸訪問(wèn)它的邊 if(!node.adjvex.visited) { console.write(node.adjvex.data+"");//訪問(wèn) node.adjvex.visited=true;//設(shè)置訪問(wèn)標(biāo)志 queue.enqueue(node.adjvex);//進(jìn)隊(duì) } node=node.next;//訪問(wèn)下一個(gè)鄰接點(diǎn) } } }

6,數(shù)據(jù)結(jié)構(gòu)題目廣度優(yōu)先和深度優(yōu)先

(一)深度優(yōu)先搜索的特點(diǎn)是:(1)從上面幾個(gè)實(shí)例看出,可以用深度優(yōu)先搜索的方法處理的題目是各種各樣的。有的搜索深度是已知和固定的,如例題2-4,2-5,2-6;有的是未知的,如例題2-7、例題2-8;有的搜索深度是有限制的,但達(dá)到目標(biāo)的深度是不定的。 但也看到,無(wú)論問(wèn)題的內(nèi)容和性質(zhì)以及求解要求如何不同,它們的程序結(jié)構(gòu)都是相同的,即都是深度優(yōu)先算法(一)和深度優(yōu)先算法(二)中描述的算法結(jié)構(gòu),不相同的僅僅是存儲(chǔ)結(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)和產(chǎn)生規(guī)則以及輸出要求。(2)深度優(yōu)先搜索法有遞歸以及非遞歸兩種設(shè)計(jì)方法。一般的,當(dāng)搜索深度較小、問(wèn)題遞歸方式比較明顯時(shí),用遞歸方法設(shè)計(jì)好,它可以使得程序結(jié)構(gòu)更簡(jiǎn)捷易懂。當(dāng)搜索深度較大時(shí),如例題2-5、2-6。當(dāng)數(shù)據(jù)量較大時(shí),由于系統(tǒng)堆棧容量的限制,遞歸容易產(chǎn)生溢出,用非遞歸方法設(shè)計(jì)比較好。(3)深度優(yōu)先搜索方法有廣義和狹義兩種理解。廣義的理解是,只要最新產(chǎn)生的結(jié)點(diǎn)(即深度最大的結(jié)點(diǎn))先進(jìn)行擴(kuò)展的方法,就稱(chēng)為深度優(yōu)先搜索方法。在這種理解情況下,深度優(yōu)先搜索算法有全部保留和不全部保留產(chǎn)生的結(jié)點(diǎn)的兩種情況。而狹義的理解是,僅僅只保留全部產(chǎn)生結(jié)點(diǎn)的算法。本書(shū)取前一種廣義的理解。不保留全部結(jié)點(diǎn)的算法屬于一般的回溯算法范疇。保留全部結(jié)點(diǎn)的算法,實(shí)際上是在數(shù)據(jù)庫(kù)中產(chǎn)生一個(gè)結(jié)點(diǎn)之間的搜索樹(shù),因此也屬于圖搜索算法的范疇。 (4)不保留全部結(jié)點(diǎn)的深度優(yōu)先搜索法,由于把擴(kuò)展望的結(jié)點(diǎn)從數(shù)據(jù)庫(kù)中彈出刪除,這樣,一般在數(shù)據(jù)庫(kù)中存儲(chǔ)的結(jié)點(diǎn)數(shù)就是深度值,因此它占用的空間較少,所以,當(dāng)搜索樹(shù)的結(jié)點(diǎn)較多,用其他方法易產(chǎn)生內(nèi)存溢出時(shí),深度優(yōu)先搜索不失為一種有效的算法。(5)從輸出結(jié)果可看出,深度優(yōu)先搜索找到的第一個(gè)解并不一定是最優(yōu)解。例如例題2-8得最優(yōu)解為13,但第一個(gè)解卻是17。如果要求出最優(yōu)解的話(huà),一種方法將是后面要介紹的動(dòng)態(tài)規(guī)劃法,另一種方法是修改原算法:把原輸出過(guò)程的地方改為記錄過(guò)程,即記錄達(dá)到當(dāng)前目標(biāo)的路徑和相應(yīng)的路程值,并與前面已記錄的值進(jìn)行比較,保留其中最優(yōu)的,等全部搜索完成后,才把保留的最優(yōu)解輸出。 二、廣度優(yōu)先搜索法的顯著特點(diǎn)是: (1)在產(chǎn)生新的子結(jié)點(diǎn)時(shí),深度越小的結(jié)點(diǎn)越先得到擴(kuò)展,即先產(chǎn)生它的子結(jié)點(diǎn)。為使算法便于實(shí)現(xiàn),存放結(jié)點(diǎn)的數(shù)據(jù)庫(kù)一般用隊(duì)列的結(jié)構(gòu)。(2)無(wú)論問(wèn)題性質(zhì)如何不同,利用廣度優(yōu)先搜索法解題的基本算法是相同的,但數(shù)據(jù)庫(kù)中每一結(jié)點(diǎn)內(nèi)容,產(chǎn)生式規(guī)則,根據(jù)不同的問(wèn)題,有不同的內(nèi)容和結(jié)構(gòu),就是同一問(wèn)題也可以有不同的表示方法。(3)當(dāng)結(jié)點(diǎn)到跟結(jié)點(diǎn)的費(fèi)用(有的書(shū)稱(chēng)為耗散值)和結(jié)點(diǎn)的深度成正比時(shí),特別是當(dāng)每一結(jié)到根結(jié)點(diǎn)的費(fèi)用等于深度時(shí),用廣度優(yōu)先法得到的解是最優(yōu)解,但如果不成正比,則得到的解不一定是最優(yōu)解。這一類(lèi)問(wèn)題要求出最優(yōu)解,一種方法是使用后面要介紹的其他方法求解,另外一種方法是改進(jìn)前面深度(或廣度)優(yōu)先搜索算法:找到一個(gè)目標(biāo)后,不是立即退出,而是記錄下目標(biāo)結(jié)點(diǎn)的路徑和費(fèi)用,如果有多個(gè)目標(biāo)結(jié)點(diǎn),就加以比較,留下較優(yōu)的結(jié)點(diǎn)。把所有可能的路徑都搜索完后,才輸出記錄的最優(yōu)路徑。(4)廣度優(yōu)先搜索算法,一般需要存儲(chǔ)產(chǎn)生的所有結(jié)點(diǎn),占的存儲(chǔ)空間要比深度優(yōu)先大得多,因此程序設(shè)計(jì)中,必須考慮溢出和節(jié)省內(nèi)存空間得問(wèn)題。(5)比較深度優(yōu)先和廣度優(yōu)先兩種搜索法,廣度優(yōu)先搜索法一般無(wú)回溯操作,即入棧和出棧的操作,所以運(yùn)行速度比深度優(yōu)先搜索算法法要快些。 總之,一般情況下,深度優(yōu)先搜索法占內(nèi)存少但速度較慢,廣度優(yōu)先搜索算法占內(nèi)存多但速度較快,在距離和深度成正比的情況下能較快地求出最優(yōu)解。因此在選擇用哪種算法時(shí),要綜合考慮。決定取舍
先畫(huà)圖,廣度優(yōu)先就是從上往下,深度優(yōu)先有幾種遍歷方法
(1)在產(chǎn)生新的子結(jié)點(diǎn)時(shí),深度越小的結(jié)點(diǎn)越先得到擴(kuò)展,即先產(chǎn)生它的子結(jié)點(diǎn)。為使算法便于實(shí)現(xiàn),存放結(jié)點(diǎn)的數(shù)據(jù)庫(kù)一般用隊(duì)列的結(jié)構(gòu)。(2)無(wú)論問(wèn)題性質(zhì)如何不同,利用廣度優(yōu)先搜索法解題的基本算法是相同的,但數(shù)據(jù)庫(kù)中每一結(jié)點(diǎn)內(nèi)容,產(chǎn)生式規(guī)則,根據(jù)不同的問(wèn)題,有不同的內(nèi)容和結(jié)構(gòu),就是同一問(wèn)題也可以有不同的表示方法。(3)當(dāng)結(jié)點(diǎn)到跟結(jié)點(diǎn)的費(fèi)用(有的書(shū)稱(chēng)為耗散值)和結(jié)點(diǎn)的深度成正比時(shí),特別是當(dāng)每一結(jié)到根結(jié)點(diǎn)的費(fèi)用等于深度時(shí),用廣度優(yōu)先法得到的解是最優(yōu)解,但如果不成正比,則得到的解不一定是最優(yōu)解。這一類(lèi)問(wèn)題要求出最優(yōu)解,一種方法是使用后面要介紹的其他方法求解,另外一種方法是改進(jìn)前面深度(或廣度)優(yōu)先搜索算法:找到一個(gè)目標(biāo)后,不是立即退出,而是記錄下目標(biāo)結(jié)點(diǎn)的路徑和費(fèi)用,如果有多個(gè)目標(biāo)結(jié)點(diǎn),就加以比較,留下較優(yōu)的結(jié)點(diǎn)。把所有可能的路徑都搜索完后,才輸出記錄的最優(yōu)路徑。(4)廣度優(yōu)先搜索算法,一般需要存儲(chǔ)產(chǎn)生的所有結(jié)點(diǎn),占的存儲(chǔ)空間要比深度優(yōu)先大得多,因此程序設(shè)計(jì)中,必須考慮溢出和節(jié)省內(nèi)存空間得問(wèn)題。(5)比較深度優(yōu)先和廣度優(yōu)先兩種搜索法,廣度優(yōu)先搜索法一般無(wú)回溯操作,即入棧和出棧的操作,所以運(yùn)行速度比深度優(yōu)先搜索算法法要快些。 總之,一般情況下,深度優(yōu)先搜索法占內(nèi)存少但速度較慢,廣度優(yōu)先搜索算法占內(nèi)存多但速度較快,在距離和深度成正比的情況下能較快地求出最優(yōu)解。因此在選擇用哪種算法時(shí),要綜合考慮。決定取舍!
文章TAG:深度優(yōu)先算法dfs是什么

最近更新

相關(guān)文章

經(jīng)驗(yàn)文章排行榜