JAVA演算法1——連通性問題之快速尋找演算法

來源:互聯網
上載者:User

標籤:合并   連通性   java演算法   快速尋找演算法   

    假設現在有一個整數對序列,每個整數對代表某周類型的對象,我們用P-Q對錶示“P連結到Q”。我們假設這種關係具有傳遞性,即如果p連結到q,而q又串連到r,則p串連到r。

    下面的程式是一個簡單演算法的實現,這個演算法是解決連通性問題的快速尋找演算法。該演算法的基礎是一個整數數組,若且唯若第p個數組元素和第q個數組元素是相等的,則p與q是相連的。我們把第i個元素初始化為i(0 ≤i≤N)。要完成p和q的合併作業,需要搜尋整個數組,把所有與第p個數組元素相同的元素全部改為第q個數組元素的值。

    

public class QuickFind{    public static void main(String[] args)    {        int N=Integer.parseInt(args[0]);        int id[]=new int[N];        for(int i=0;i<N;i++)        id[i]=i;        for(In.init();!In.empty();)        {                int p=In.getInt(),q=In.get();            int t=id[p];            if(t==id[q])            continue;            for(int i=0;i<N;i++)            if(id[i]==t)            id[i]=id[q];        }    }}

    為了實現尋找操作,我們只需檢查所指示的數組元素值是否相等,另一方面,合併作業需要為每一對輸入掃描一次整個數組。

    性質:快速尋找演算法要解決N個對象的連通性問題,需要進行M次合併作業,至少要執行MN條指令。

    現代電腦計算能力很強,如果M和N都很小的話,演算法對效能影響不大,但是在現代應用中,可能需要處理幾十億個對象和數百萬個輸入對,所以這種快速尋找演算法已經不適合解決此類問題。

本文出自 “飛魚技術” 部落格,請務必保留此出處http://flyingfish.blog.51cto.com/9580339/1622541

JAVA演算法1——連通性問題之快速尋找演算法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.