我目前正在研究DAWG,但我找不到一种构建非循环自动机的好方法.
所以基本上,我想要做的是:

它基本上是一棵树,其中状态的数量减少了.我会将它用于数字,但概念完全相同.
我想知道最快的方法是什么,我的实际计划是构建如左图所示的图形,然后查看低级别的状态以及它们相似时合并它们.
虽然,我不确定这是最好的方法,但是有没有人知道如何构建它.
问候.
我一直在寻找一些输入正则表达式或字符串并将其转换为NFA然后转换为DFA的算法,这实际上会打印出相应最终DFA的转换表.
因此,我想知道是否已经有一个算法或C或Python库可以做到这一点,或者如果你有算法的建议,我可以实现.
谢谢.
我试图在C中使用带有CUDA 6和统一内存的流.我之前的流实现看起来像这样:
for(x=0; x<DSIZE; x+=N*2){
gpuErrchk(cudaMemcpyAsync(array_d0, array_h+x, N*sizeof(char), cudaMemcpyHostToDevice, stream0));
gpuErrchk(cudaMemcpyAsync(array_d1, array_h+x+N, N*sizeof(char), cudaMemcpyHostToDevice, stream1));
gpuErrchk(cudaMemcpyAsync(data_d0, data_h, wrap->size*sizeof(int), cudaMemcpyHostToDevice, stream0));
gpuErrchk(cudaMemcpyAsync(data_d1, data_h, wrap->size*sizeof(int), cudaMemcpyHostToDevice, stream1));
searchGPUModified<<<N/128,128,0,stream0>>>(data_d0, array_d0, out_d0 );
searchGPUModified<<<N/128,128,0,stream1>>>(data_d1, array_d1, out_d1);
gpuErrchk(cudaMemcpyAsync(out_h+x, out_d0 , N * sizeof(int), cudaMemcpyDeviceToHost, stream0));
gpuErrchk(cudaMemcpyAsync(out_h+x+N, out_d1 ,N * sizeof(int), cudaMemcpyDeviceToHost, stream1));
}
Run Code Online (Sandbox Code Playgroud)
但我找不到流和统一内存的例子,使用相同的技术,将数据块发送到GPU.我想知道是否有办法做到这一点?
我创建了一个简单的C树,我打算在GPU上移植它.
我树的结构如下:
typedef struct node{
short int final; // 2 byte
char number; // 1 byte
struct node *child[2]; // 8 * NUM_SIZE byte
}node;
Run Code Online (Sandbox Code Playgroud)
我现在想知道如何在CUDA上移植代码,或者如何在CUDA中使用结构,我应该在设备上创建树吗?或者在主机上创建树并将其传递给设备?
在设备上创建树似乎是我的最佳答案,虽然我不确定如何在设备上使用结构.
谢谢
我想知道在0到49k之间生成一个伪随机数的最佳方法是什么,对于每个线程来说,通过使用curand或其他东西是相同的.
我更喜欢在内核中生成随机数,因为我必须在那时生成一个但大约10k次.
我可以使用介于0.0和1.0之间的浮点数,但我不知道如何使我的PRN可用于所有线程,因为大多数帖子和示例显示如何为每个线程使用不同的PRN.
谢谢