我需要一个来自一个节点的有向循环图的最短路径的示例(它应该从将作为输入的节点到达图的所有节点).
如果有一个例子,我需要用C++或算法.
有没有人知道Donald B. Johnson的算法,它列举了有向图中的所有基本电路(周期)?
我有他在1975年发表的论文,但我无法理解伪代码.
我的目标是用Java实现这个算法.
例如,我所遇到的一些问题是它所指的矩阵A k是什么.在伪代码中,它提到了这一点
Ak:=adjacency structure of strong component K with least
vertex in subgraph of G induced by {s,s+1,....n};
Run Code Online (Sandbox Code Playgroud)
这是否意味着我必须实现另一种找到A k矩阵的算法?
另一个问题是以下是什么意思?
begin logical f;
Run Code Online (Sandbox Code Playgroud)
这条线是否"logical procedure CIRCUIT (integer value v);"意味着电路程序返回一个逻辑变量?在伪代码中也有" CIRCUIT := f;" 行.这是什么意思?
如果有人能将这个1970年代的伪代码翻译成更现代的伪代码,那将是很棒的,所以我能理解它
如果您有兴趣提供帮助但找不到纸张,请发送电子邮件至pitelk@hotmail.com,我会将纸张发给您.
对于我正在研究的小项目,我需要循环查看列表.对于这个循环的每个元素,我必须通过相同的列表开始另一个循环,前一个元素作为新循环的第一个元素.例如,我希望能够生成这样的东西:
1, 2, 3, 4, 1, 2, 3, 4, 1, ...
2, 3, 4, 1, 2, 3, 4, 1, 2, ...
3, 4, 1, 2, 3, 4, 1, 2, 3, ...
4, 1, 2, 3, 4, 1, 2, 3, 4, ...
1, 2, 3, 4, 1, 2, 3, 4, 1, ...
...
Run Code Online (Sandbox Code Playgroud)
我认为在每个.next()之后复制一个itertools.cycle会保留当前状态,这样我就可以用"外部"循环中的元素开始新的循环.甚至"将循环指针"重置为较旧的位置.我尝试了以下方法:
>>> import itertools, copy
>>> a = itertools.cycle([1, 2, 3, 4])
>>> b = copy.copy(a)
Run Code Online (Sandbox Code Playgroud)
但得到了这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module> …Run Code Online (Sandbox Code Playgroud) 我有一个沿边缘流量的有向图,我想通过删除所有循环流来简化它.这可以通过在任何给定循环中找到沿每个边缘的最小流量并且将循环中每个边缘的流量减少该最小体积来完成,从而删除具有零流量的边缘.当所有循环流都被移除后,图形将是非循环的.
例如,如果我有顶点A,B和C,其中从A→B,2从B→C和3从C→A的1流动的图表然后我可以从A→B,1从没有流重写这个B→C和2→C→A.图中的边数从3减少到2,结果图是非循环的.
哪种算法(如果有的话)可以解决这个问题?
请考虑以下三个简化文件:
student.h:
#ifndef STUDENT_H
#define STUDENT_H
#include "course.h"
class Student
{
private:
Course someCourse;
};
#endif
Run Code Online (Sandbox Code Playgroud)
course.h:
#ifndef COURSE_H
#define COURSE_H
#include "student.h"
class Course
{
private:
Student someStudent;
};
#endif
Run Code Online (Sandbox Code Playgroud)
和main.cpp:
#include "student.h"
int main();
Run Code Online (Sandbox Code Playgroud)
这不会编译给我
错误C2146:语法错误:缺少';' 在标识符'someStudent'之前
它会在更复杂的程序中产生更多错误(即使对于正确的代码部分).我猜设计是错误的:Student包含Course和Course包含Student.我想用它代表的是一个学生需要几门课程而一门课程有几个学生(我在一个完整的程序中使用向量,为简单起见,这里避免使用它们).有什么建议怎么可能?
弗拉德,提前谢谢.
更新:
感谢您的快速回复.Student课堂上的Course课堂前向声明(以及删除#include "student.h")似乎可以胜任.对不起,我觉得这里没关系,但实际上我在每个都使用const指针的向量(因为学生不应该能够控制a Course而a Course应该不能控制a Student),如:
vector<const Student* const> students; // in Course class
Run Code Online (Sandbox Code Playgroud) 我有一个 JQuery 幻灯片,其中一些文本/幻灯片淡入淡出。
同时我有一个导航/点可以点击。当您单击某个位置时,幻灯片/文本会发生变化。
问题是当文本/幻灯片褪色并且用户单击某个位置时,褪色会中断。如果用户快速点击所有的点,就会同时显示来自不同幻灯片的文本。
我希望褪色结束,然后用户可以点击。简而言之:褪色时没有点击。
我做了一个小例子来说明这个问题。
html的头部:
<style type="text/css">
.slideshow
{
width:600px;
height:30px;
background-color:#0FF;
overflow:hidden;
margin:50px;
}
.slideshow_text_font
{
font:Verdana, Geneva, sans-serif;
font-size:22px;
font-weight:bold;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.cycle.all.latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.slideshow').cycle({
fx: 'custom',
sync: 0,
cssBefore: {
opacity:0,
display: 'block'
},
animIn: {
opacity:1
},
animOut: {
opacity:0
},
timeout:5000,
speed:2000
});
});
if (document.images) {
function setSlide(index) {
$('.slideshow').cycle(index);
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
html的正文部分:
<div class="slideshow">
<div><a class="slideshow_text_font">1. Some text for slide …Run Code Online (Sandbox Code Playgroud) 我有一个jQuery循环演示页面,其中包含大约48张幻灯片.问题是所有资产的初始加载需要一段时间,因此页面看起来会扭曲大约1-5秒.有没有办法延迟加载每张幻灯片所需的资源,只有在调用幻灯片或已知幻灯片是上一张或下一张幻灯片时?
关于此的另一个问题仅回答了如何检测周期,也没有输出周期。因此,我想在无向图上写一个在O(V + E)时间(V =顶点,E =边)中运行BFS或DFS的算法,并输出一个循环。
到目前为止,我所了解的是BFS / DFS的工作方式,并且如果您访问已被标记为已访问的节点,则可以使用BFS来检测周期。
algorithm graph breadth-first-search cycle depth-first-search
我想计算有向图中可用的有向循环总数(只需要计数)。
您可以假设图形是作为邻接矩阵给出的。
我知道DFS但无法为这个问题制定一个有效的算法。
请提供一些使用DFS.
说我有以下三个列表:
aList = [1,2,3,4,5,6]
bList = ['a','b','c','d']
cList = [1,2]
Run Code Online (Sandbox Code Playgroud)
我想使用来遍历它们zip。
通过如下方式使用循环zip:
from itertools import cycle
for a,b,c in zip(aList, cycle(bList), cycle(cList)):
print a,b,c
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
1 a 1
2 b 2
3 c 1
4 d 2
5 a 1
6 b 2
Run Code Online (Sandbox Code Playgroud)
虽然我希望我的结果像:
1 a 1
2 b 1
3 c 1
4 d 1
5 a 2
6 b 2
Run Code Online (Sandbox Code Playgroud)