取样,无需更换未知组
Sampling without replacement from an unknown set
我必须从一组我称之为S的DFA中均匀地提取DFA(确定性有限自动机(。这似乎是一个简单的问题,但我没有设置S。S 包含所有维度n的 DFA,因此我知道 S 的维度,我可以构建S但我不能,因为它非常大。我还知道集合Sm的维度,例如 S3 是S的子集,S3 包含具有 3 个状态的所有DFA,Sm包含所有具有 m 状态的DFA,其中 m <n。>
我没有集合S,因此我必须模拟均匀采样。此外,我必须在没有更换的情况下进行采样。 我创建了一个集合 D={1,2,3........n},对于我称之为i的每个值,我在D中关联值|硅|/|S|其中 | |指示作为参数的集合中的元素数。即我创建了一个发行版。现在我可以根据这个分布从 D 中提取一个值。通过这种方式,我找到了从中提取单个 DFA 的集合。例如,如果从 D 中提取 4,那么我必须从S4中均匀提取 DFA。
但我的问题是,如何在不替换的情况下从Si(上例中的S4(中采样 DFA?也就是说,如果我之前已经提取了特定的 DFA,那么在下一次采样中,我必须避免该特定的 DFA。 请注意,DFA是一个矩阵,一个表(二维数组(。 还备注,提取特定的DFA意味着为上述表的每个单元格均匀提取{1,.....,k}中的值,其中k是字母表中元素的数量(如果接受或拒绝,您还必须为每个状态提取(。
(我必须在 C++11 中实现,但这无关紧要(
如果我正确理解您的问题,那么简单的解决方案是保留每个采样的 DFA,并在生成新的随机 DFA 时 - 检查它之前是否生成过。我想您的问题是存储它们所需的大量内存。
如果是这样,您可以只保留每个DFA的哈希值 - 例如128位MurmurHash3,并将新生成的DFA的哈希值与存储的哈希值进行比较。
- 继承期间显示未知行为的子类
- 输入中的字符串数未知(以字母表示)
- 具有未知值时的时间复杂性
- 链表中写入访问冲突的未知原因
- 正在生成未知类实例
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 读取文件时运行时的未知行为
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 初始化多个未知基类
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何存储未知次数迭代的输入?
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- 编译 Boost 时在 OS X 上的"ld:未知选项:-soname"
- 未知的 CMake 命令"create_single_source_cgal_program"
- 如何在C++中循环访问未知对象方法?
- Coursera :自动评分器的未知信号 11
- 即使直接从官方示例中复制,也找不到未知类型名称QML_ELEMENT和 QML 模块
- 未知的 GCC 链接器错误,但已成功构建
- 如何从未知视图中声明范围::v3::View 变量
- 取样,无需更换未知组