- 浏览: 324642 次
- 性别:
- 来自: 西宁
文章分类
- 全部博客 (120)
- Java Thought (29)
- Java Pattern (4)
- Data Base (7)
- Algorithm Design (33)
- Linux (0)
- Mysql (2)
- Oracle (0)
- ConstructionDesign-架构 (5)
- Spring Platform (0)
- Tomcat (1)
- JavaScript (7)
- Web System (3)
- MS SQLServer (1)
- 软件哲学 (6)
- View (3)
- Java GUI (4)
- CSSDIV (7)
- CloudComputing (0)
- WebService (0)
- SystemOrProject (2)
- SOA (0)
- 互转共享 (3)
- 偶尔java习题 (0)
- Thinks with does (1)
最新评论
-
sassds:
佩服啊 高手
分享一款js特效 -
bhjackson:
学习啦,能否详细介绍下回溯的过程?O(∩_∩)O谢谢
分享回溯法- 找n个数中r个数的组合 -
zk7019311:
了解了解。。。。。
业务层代码复用的一点建议 -
lijie1819:
看到LZ的设计思想,感觉和抽象工厂模式有点相像。
业务层代码复用的一点建议 -
wjjcml1982:
酷毙了!楼主太强悍了!
分享一款js特效
1. 问题描述:
给定一个带权有向图D与源点v, 求从v到D中其他顶点的最短路径。限定个边上的权值大于或等于0.
2. java实现:
给定一个带权有向图D与源点v, 求从v到D中其他顶点的最短路径。限定个边上的权值大于或等于0.
2. java实现:
package boke.graph.shortpath1; import java.util.Stack; /** * 问题描述: 给定一个带权有向图D与源点v, 求从v到D中其他顶点的最短路径。限定个边上的权值大于或等于0. * * 带权有向图 - 边上权值非负情形的单源最短路径问题 * * @since jdk1.5及其以上 * @author 毛正吉 * @version 1.0 * @date 2010.06.06 * */ public class Graph { public static final float MAXNUM = Float.MAX_VALUE; // 表示无穷大 /** * @param args */ public static void main(String[] args) { int n = 5; float[][] edge = { { 0, 10, MAXNUM, 30, 100 }, { MAXNUM, 0, 50, MAXNUM, MAXNUM }, { MAXNUM, MAXNUM, 0, MAXNUM, 10 }, { MAXNUM, MAXNUM, 20, 0, 60 }, { MAXNUM, MAXNUM, MAXNUM, MAXNUM, 0 } }; Graph g = new Graph(n, edge); g.ShortestPath(5, 0); float[] dist = g.getDist(); for (int i = 0; i < n; i++) { System.out.print(dist[i] + " "); // 输出到给顶点的最短路径长度 } System.out.println(""); // 读取从源点0到终点4的最短路径 int[] ph = g.getPath(); int len = ph.length; System.out.println(len); Stack sk = new Stack(); int idx = ph[4]; sk.push(4); if (idx > 0) { sk.push(idx); } while (idx >= 0 && ph[idx] != 0) { idx = ph[idx]; if (idx > 0) { sk.push(idx); } } sk.push(0); while (!sk.isEmpty()) { Integer p = (Integer) sk.pop(); System.out.print(p + " "); // 输出源点0到终点4的最短路径 } } private int numVertices; // 图的最大定点个数 private float[][] edge; // 图的邻接矩阵 private float[] dist; // 存放从顶点0到其他各顶点的最短路径长度 private int[] path; // 存放在最短路径上该顶点的前一顶点的顶点号 private int[] S; // 已求得的在最短路径上的顶点的定点号 public Graph(int _numVertices, float[][] _edge) { numVertices = _numVertices; edge = _edge; dist = new float[numVertices]; path = new int[numVertices]; S = new int[numVertices]; } /** * dist[j], 0<=j<n,是当前求到的从顶点v到顶点j的最短路径长度; path[j], 0<=j<n,存放求到的最短路径 * * @param n * @param v */ public void ShortestPath(int n, int v) { for (int i = 0; i < n; i++) { // dist和path数组初始化 dist[i] = edge[v][i]; // 邻接矩阵第v行元素复制到dist中 S[i] = 0; // 已求出最短路径的顶点集合初始化 if (i != v && dist[i] < MAXNUM) { path[i] = v; } else { path[i] = -1; // 路径存放数组初始化 } } S[v] = 1; // 顶点v加入顶点集合 dist[v] = 0; for (int i = 0; i < n - 1; i++) { // 从顶点v确定n-1条路径 float min = MAXNUM; int u = v; for (int j = 0; j < n; j++) { // 选择当前不在集合S中具有最短路径的顶点u if (S[j] == 0 && dist[j] < min) { u = j; min = dist[j]; } } S[u] = 1; // 将顶点u加入集合S,表示它已在最短路径上 for (int w = 0; w < n; w++) { // 修改 if (S[w] == 0 && (edge[u][w] < MAXNUM) && (dist[u] + edge[u][w] < dist[w])) { dist[w] = dist[u] + edge[u][w]; path[w] = u; } } } } /** * 获得顶点表 * * @return */ public int getNumVertices() { return numVertices; } /** * 获得邻接矩阵 * * @return */ public float[][] getEdge() { return edge; } /** * dist[j], 0<=j<n,是当前求到的从顶点v到顶点j的最短路径长度; * * @return */ public float[] getDist() { return dist; } /** * path[j], 0<=j<n,存放求到的最短路径 * * @return */ public int[] getPath() { return path; } /** * 已求得的在最短路径上的顶点的定点号 * * @return */ public int[] getS() { return S; } }
发表评论
-
开散列的简单模拟(一)
2010-06-28 08:33 18221. 散列 散列有两种 ... -
递归和动态规划构造两个字符序列的最长公共字符子序列
2010-06-28 08:28 4493应je朋友要求,所以翻开以前的算法题目,整理了以下,给 ... -
最大公约数的应用 - 分享
2010-06-25 08:08 18491.先看一家大公司笔试题 数组中有n个数据,要将它们顺 ... -
信息数字化解逻辑题分享
2010-06-21 08:09 12561. 前提条件: 将逻辑题目中的信息用数字化描述。 ... -
递归算法分析-分享
2010-06-19 16:09 15921. 深入认识递归 (1) 递 ... -
非递归算法分析实例分享
2010-06-18 15:47 10541 仅仅依赖于问题规模的时间复杂度 (1) 例1: 交换i和 ... -
NP完全性问题
2010-06-18 14:02 7013在学习算法设计与分析时,经常会提到NP完全性问题,到底 ... -
算法分析精述分享
2010-06-18 12:03 8721. 算法分析的评价体系 评价算法的三条主要标准是: ... -
贪婪策略算法的总结分享
2010-06-11 08:30 60691. 贪婪算法描述 贪婪算法又叫登山法,它的根本思想是 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)四
2010-06-07 08:54 136821. 工作分配问题。 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)三
2010-06-07 08:53 109017. 字符统计问题。 编写一个算法,统计在一个输入 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)二
2010-06-07 08:47 13668. 数字迷问题。 A B C ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)一
2010-06-07 08:38 11801. 线程问题。 设计4个线程,其中两个线程每次对j增加 ... -
是否很久没抽象和逻辑了呢? DODO它吧(很基础)
2010-06-07 08:37 18771. 线程问题。 设计 ... -
Java快速排序算法整理(二)
2010-05-31 14:04 1031package boke.sort; /** * 快 ... -
Java快速排序算法整理(一)
2010-05-31 13:39 655package boke.sort; /** * 快 ... -
Java最小堆实现
2010-05-31 08:29 58511.堆结点 package boke.heap1; /* ... -
Java插入排序代码整理
2010-05-28 14:44 1250package boke.sort; /** * 插 ... -
Java选择排序代码整理
2010-05-28 14:37 1505package boke.sort; /** * 选 ... -
Java冒泡排序代码整理
2010-05-28 14:26 1963Java冒泡排序代码整理: package boke.sor ...
相关推荐
1. 问题描述:求网(带权有向图)中从一个顶点到其余各顶点间的最短路径。 2. 实验原理:贪心算法原理。 3. 实验内容:使用贪心算法解决单源最短路径问题,并通过本例熟悉贪心算法在程序设计中的应用方法。 4. 实验...
单源最短路径问题可以描述为:给定一个带权有向图 G=(V,E),其中每条边都有一个非负的权值 c[i,j],从一个顶点(源点)到达其他所有顶点的最短路径问题。该问题的目的是找到从源点出发到达其他所有结点的最短路径...
单源最短路径问题是指在一个带有权重(通常为非负)的有向图或无向图中找到从一个指定顶点到所有其他顶点的最短路径的问题。这个问题在很多实际应用中都有广泛的应用,比如网络路由、地图导航等。 ### 2. 关键概念...
【带权图求最短路径课程设计报告】的目的是通过编程实现从给定的源点到图中所有其他顶点的最短路径。这个任务主要分为两个关键部分:使用邻接表表示图以及运用狄克斯特拉算法求解最短路径。 首先,我们需要了解**...
给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数。另外,还给定 V 中的一个顶点,称为源。现在我们要计算从源到所有其他各顶点的最短路径长度。这里的长度是指路上各边权之和。这个问题通常称为单源最短...
图 5.1 遍历:深度优先搜索、广度优先...5.3 有向图单源最短路径: Dijkstra算法(要求所有权值非负):算法给定一个源点,每次从剩余顶点中选择具有最短路径估计的顶点u,将其加入集合S,并对u的所有出边进行松弛。
"Dijkstra算法寻找最短路径的完整源代码" 本资源提供了Dijkstra算法寻找最短路径的完整源代码,同时附带了Kruskal最小生成树算法。该程序提供了输入输出的完整控制台程序,能够帮助用户快速了解和应用Dijkstra算法...
Dijkstra算法是一种常用的单源最短路径算法,用于解决带权有向图中的最短路径问题。 单源最短路径问题 单源最短路径问题是指从给定的源顶点s到其它顶点v的权最小路径。该问题可以形式化地描述为:给定一个带权有向...
本文主要介绍了C++计算任意权值的单源最短路径,通过Bellman-Ford算法实现带有负权值的有向图的最短路径计算。该算法的思路是通过relaxation的方法,逐步更新距离信息,直到所有节点的最短路径都被计算出来为止。 ...
在有向图中,路径的方向很重要,因为从一个顶点到另一个顶点可能没有直接的路径。单源最短路径问题是指从图中的一个特定顶点(源点)出发,找到到所有其他顶点的最短路径。这里的“最短”指的是路径上的边的权值之和...
- **单源最短路径问题**:给定一个带权重的有向图\( G = (V, E, W) \),其中\( V \)为顶点集,\( E \)为有向边集,\( W \)为边上的权集。问题的目标是从一个特定的起点\( S \)到图中每个其他顶点的最短路径。 #### ...
最短路径问题是图论中的一个经典问题,其基本概念涉及到有向图或无向图中,从某一顶点到另一顶点或多个顶点之间经过的路径总权值最小的路径。在图论中,路径上的权值可以是边的长度、时间或其他度量,而权值最小的...
已知一个n结点有向图G=(V,E)和边的权函数c(e),求由G中某指定结点v0到其它各结点的最短路径。假定边的权值为正。 2、文件k路归并问题: 将记录长度分别为X1,X2,X3…Xn的n个文件归并为一个文件。每次归并k个文件,...
对于有向图,矩阵是对称的,表示从一个顶点到另一个顶点的边的权重。在C语言中,可以使用二维数组来表示邻接矩阵。 2. **创建图的算法** 在C语言中,创建邻接矩阵通常涉及以下步骤: - 定义一个二维数组,大小为...
在有向图中,邻接矩阵通常是不对称的,因此只需要存储入边的权值。 2. 单源最短路径: 迪杰斯特拉算法是一种贪心算法,它通过逐步扩展已知最短路径来找到从源点到所有其他顶点的最短路径。算法的核心是维护一个...
贝尔曼·福特(Bellman Ford)算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法。该算法由 Richard Bellman 和 Lester Ford 分别发表于 1958 年和 1956 年,而实际上 Edward...
本PPT学习教案主要讲解了如何求解带权有向图中最短路径的问题。 首先,图中的顶点代表城市,边则表示城市之间的交通联系。边上的权值可以理解为这段路线的长度、时间消耗或费用。最短路径是指从源点(起始城市)...
图的遍历、最短路径和最小生成树是图论中的经典问题,它们在很多领域如网络设计、路由算法、社交网络分析等都有广泛应用。下面我们将深入探讨这些概念。 首先,**图的遍历** 是指在图中按照特定顺序访问每个顶点的...
* 可以解决带权有向图中的最短路径问题 * 可以应用于解决实际中的各种最短路径问题 Dijkstra算法的缺点是: * 不适用于解决带负权值的图 * 不适用于解决有负权值的最短路径问题 * 时间复杂度较高,需要进行多次...