我有一个大的(> 1000)有向无环图集,每个图都有一个大的(> 1000)顶点集.顶点被标记,标签的基数很小(<30)
我想识别(我的)在整个图表集中频繁出现的子结构.
我们要查找的输出是给定图形中的子结构列表及其(出现次数).
我试图调查事物并且(因为它似乎总是发生在我身上)问题是NP完全的.据我所知,gSpan是解决这个问题最常用的算法.但是,如上所述,我不是在图中寻找任何常见的子结构,而只是那些遵守某些规则的子结构.人们应该能够如此使用它以减少搜索空间.
有关如何解决此问题的任何见解?
更新:我应该补充一点,上述规则可以在一定程度上递归.例如,"标记为A且具有至少两个标记为B的子节点的顶点,每个子节点具有至少一个标记为A的子节点".最大递归深度介于1到10之间.
更新II:指出我们不是在搜索已知或首选的子结构,而是在挖掘它们.没有勺针.
我有一个字符串列表
我想找到一组最短的子序列,这些子序列对于集合中的每个字符串都是唯一的; 每个子序列中的字符不需要相邻,只是它们出现在原始字符串中的顺序.对于上面的例子,那将是(沿着其他可能性)
Fb(正如它所获得的Foobar一样独特;与Foobaron的碰撞不可避免)Fn(Foobaron独有,没有其他...F...n...)Ft(脚)bs(barstool)bf(barfoo)e(自由)是否有一种有效的方法来挖掘这些序列并最小化碰撞字符串的数量(当无法避免碰撞时,例如当字符串是其他字符串的子串时)来自给定的字符串数组?更确切地说,选择长度N,最多N个字符的子序列集合是什么,每个字符识别具有最少数量的冲突的原始字符串.
我有一个大约3.300个顶点的DAG,它可以通过dot一个或多或少的简单树很成功地布局(事情变得复杂,因为顶点可以有不同的前导来自不同的排名,所以交叉频繁).在图中每个顶点应运而生在原始处理的特定时间,我想在布局一个轴表示时间:边缘关系像a -> v, b -> v装置,其a和b应运而生在之前一些特定时间v.
是否有DAG的布局算法允许我在一个轴上指定位置(或至少是距离),并在另一个轴上提出关于边缘交叉的最佳布局?
由于被丢弃的时候,但文件和流的自动关闭io::stdin()仅提供操作底层的流,我看不出明确地关闭stdin或stdout或检测EOF就stdin在我的计划.
考虑
fn main() {
let mut stdin = io::stdin();
let mut linebuffer = String::new();
loop {
match stdin.read_line(&mut linebuffer) {
Ok(i) if i == 0 => { break; },
Ok(i) => {
println!("{} {}", linebuffer, i);
},
Err(e) => { panic!(e); }
}
linebuffer.clear();
}
}
Run Code Online (Sandbox Code Playgroud)
检查放入缓冲区的字节数似乎是不稳定的,因为管道可能会被写入其中的零字节刷新.从封闭中读取stdin应该导致IOError,但事实并非如此.
与此有点相关:如何明确关闭我自己stdout/ stderr?
我有一个三级bokeh.models.FactorRange用于在vbar-plot上绘制刻度标签.问题在于总共有几十个因素,最低级别的标签变得非常狭窄.
我可以plot.xaxis.formatter = bokeh.models.PrintfTickFormatter(format='')用来抑制最低级别标签的绘制,但这看起来像是一个丑陋的黑客.此外,我需要旋转二级刻度标签,但plot.xaxis.major_label_orientation = ...只影响最低级别的刻度(就像plot.xaxis.formatter那样).
如何bokeh.models.FactorRange单独控制每个级别?
我正在处理布尔函数,我只能(但安全地)假设它们作为SOP进入并且不包含否定(例如(A && B && C)||(A && B && D)).析取的数量通常> 5,连词的数量通常> 10.
因为在我的情况下计算每个变量的值很难并且结果被认为是短暂的,我需要能够最小化关于变量出现的所述函数.这种最小化的结果不需要是任何正常形式,并且允许任意深度嵌套.
在问过类似问题之前,SO 指出了使用扇出最小化,卡诺图,QM或BDD的一般解决方案.在处理这些方法之前 - 这会大大夸大我的代码 - 我想仔细检查输入函数的先验已知事实是否不会产生使用较小但较不通用的最小化方法的可能性.
应用吸收和分配规律的AFAICS将始终提供最小的形式.是否有可能利用这些功能作为SOP而没有否定的事实?在我看来,对变量应该有一个简单的交集和并集运算的递归算法,它将产生所需的结果.
可以描述一下这个算法吗?
编辑:征求意见:在对该主题做了一些研究之后,在我看来,这里提出的问题等同于找到给定函数的简化BDD的最优变量排序.
背景:最小化的函数被传递到作业队列以计算所有必需变量的值.之后评估该功能.考虑应用示例:
有些板条箱提供了pub const &str-version字符串,有些则没有.要有一个通用的解决方案,我需要一个列表,列出cargo build编译过程中已知和使用的所有依赖项及其版本,这样我就可以构建自己const &str的版本.这是我自己的版本以及我用 -Debug输出编译的所有版本.
是否有可能获得所有依赖项及其版本的列表build.rs?
Cargo.lock似乎是一个很好的来源.它实际上是声音解析Cargo.lock的build.rs?是否可以保证更新到Cargo实际使用并写入磁盘的内容?
我想在<textarea>js 函数中设置文本;我只是将innerText-attribute设置为一个新值。文本是多行的,应该这样显示。但是,浏览器会删除换行符,并且整个文本显示为一行:
document.getElementById("my_textarea1").innerText = "foo\nbar"; // displayed as "foobar"
document.getElementById("my_textarea2").innerText = "foo\
bar"; // displayed as "foobar"
document.getElementById("my_textarea3").innerText = `foo\
bar`; // again, "foobar"Run Code Online (Sandbox Code Playgroud)
<textarea id="my_textarea1"></textarea>
<textarea id="my_textarea2"></textarea>
<textarea id="my_textarea3"></textarea>Run Code Online (Sandbox Code Playgroud)
在 a 中设置文本时有没有办法保留换行符<textarea>?
我生成如下 SVG
<svg xmlns="http://www.w3.org/2000/svg" xmlns:foobar="http://foobar.com">
<path d="..." foobar:foo="bar"/>
</svg>
Run Code Online (Sandbox Code Playgroud)
如果没有自定义属性foo(和命名空间foobar),整个 SVG 将根据 DTD 进行验证。显然,我错误地使用了自定义命名空间,因为添加foobar命名空间和关联属性会导致xmllint验证失败,从 的声明开始xmlns:foobar=...,它本身不是 的元素svg。我的声明有错吗?使用自定义命名空间/属性时是否可以根据 DTD 进行验证?
我正在生成一个线程,该线程构建本质上是一棵树,稍后需要它,因此可以在线程外进行计算。举个例子,考虑一个Foo { inner: HashMap<Bar, Rc<FooBar>> }. 线程的闭包不会捕获周围环境中的任何内容。
问题在于,它Rc构成了整个类型!Send。这会阻止Foo返回到生成线程。有效地,Rc“毒药” Foo。
我不明白为什么由生成的线程创建并返回的类型仍然需要是Send:它强制所有内部类型(在本例中是Rcin the HashMap、 in Foo、 to be Send)。从它强制生成的线程始终使用原子计数,而实际上两个线程同时访问引用计数器的可能性为零。
Rc有没有办法从线程返回(而不是共享!)包含 an 的类型?我是否遗漏了一些理解Send?
algorithm ×4
rust ×3
algebra ×1
bokeh ×1
build ×1
data-mining ×1
dependencies ×1
dtd ×1
graph ×1
graph-theory ×1
html ×1
javascript ×1
python ×1
rust-cargo ×1
string ×1
svg ×1
xml ×1