小编dso*_*ano的帖子

迭代DFS与递归DFS和不同元素顺序

我编写了一个递归DFS算法来遍历图:

void Graph<E, N>::DFS(Node n)
{
    std::cout << ReadNode(n) << " ";

    MarkVisited(n);

    NodeList adjnodes = Adjacent(n);

    NodeList::position pos = adjnodes.FirstPosition();

    while(!adjnodes.End(pos))
    {
        Node adj = adjnodes.ReadList(pos);

        if(!IsMarked(adj))
            DFS(adj);

        pos = adjnodes.NextPosition(pos);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我用堆栈编写了迭代DFS算法:

template <typename E, typename N>
void Graph<E, N>::IterativeDFS(Node n)
{
    Stack<Node> stack;

    stack.Push(n);

    while(!stack.IsEmpty())
    {
        Node u = stack.Read();

        stack.Pop();

        if(!IsMarked(u))
        {
            std::cout << ReadNode(u) << " ";

            MarkVisited(u);

            NodeList adjnodes = Adjacent(u);

            NodeList::position pos = adjnodes.FirstPosition();

            while(!adjnodes.End(pos))
            {
                stack.Push(adjnodes.ReadList(pos));

                pos = adjnodes.NextPosition(pos);
            }
        } …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm traversal graph depth-first-search

40
推荐指数
1
解决办法
4万
查看次数

如何为嵌入式系统设计串行命令协议?

我有一个嵌入式系统,我正在通过串口进行通信.现在,命令结构旨在以交互方式操作:它显示提示,接受一些命令,并以人类可读的形式显示结果.

我正在考虑将其更改为更加机器可用的格式,因此我可以通过MATLAB GUI与它进行对话而不会有太多麻烦(现在它正在打扰交互式提示和不同的消息长度等).

那么是否有某个文档或标准描述了如何为嵌入式系统设计良好的串行命令协议?

embedded serial-port

39
推荐指数
6
解决办法
3万
查看次数

嵌入式设备的良好串行通信协议/堆栈?

在为各种项目编写了几种不同的自定义串行协议之后,我开始对每次重新发明轮子感到沮丧.我不断继续为每个项目开发定制解决方案,而是一直在寻找更通用的解决方案.我想知道是否有人知道满足以下要求的串行协议(或更好的实现):

  • 支持多种设备.我们希望能够支持RS485总线.
  • 保证交货.某种确认机制,以及一些简单的错误检测(CRC16可能很好).
  • 不是主/从.理想情况下,从设备可以异步发送数据.这主要是出于审美原因,轮询每个奴隶的概念对我来说感觉不对.
  • OS独立性.理想情况下,它根本不依赖于抢占式多任务环境.如果我能得到其他东西,我愿意承认这一点.
  • ANSI C.我们需要能够为几种不同的体系结构编译它.

速度不是太大的问题,我们愿意放弃一些速度,以满足其他一些需求.但是,我们希望尽量减少所需资源的数量.

我即将开始实施带有搭载ACK的滑动窗口协议,而且没有选择性重复,但是想到也许有人可以省去我的麻烦.有谁知道我可以利用的现有项目?或者也许是更好的策略?

更新
我认真考虑过TCP/IP实现,但我真的希望能有更轻量级的东西.TCP/IP的许多功能对于我正在尝试的内容来说都是过度的.我愿意(不情愿地)接受我想要的功能可能不包含在较轻的协议中.

更新2
感谢您关于CAN的提示.我过去看过它,将来可能会用它.我真的很喜欢这个库来处理确认,缓冲,重试等.我想我更需要网络/传输层而不是数据链路/物理层.

更新3
所以听起来这个领域的最新技术是:

  • 精简的TCP/IP堆栈.可能从lwIPuIP开始.
  • 基于CAN的实现,它可能很大程度上依赖于CAN总线,因此在其他物理层上没有用处.像CAN Festival这样的东西可以帮助你.
  • HDLC或SDLC实现(如此).这可能就是我们要走的路线.

如果您遇到这个问题,请随时发布更多答案.

c embedded serial-port protocols firmware

38
推荐指数
3
解决办法
1万
查看次数

如何配置WCF以通过Internet使用x509证书?

我需要使用x509证书从富客户端通过Internet获得安全的消息级别身份验证到安全的WCF Web服务.

具体来说,我正在寻找设置,配置,编码和部署的逐步指导,包括创建"开发"证书,安装它,以及获得用于生产的"真实"证书.

wcf x509

37
推荐指数
2
解决办法
3万
查看次数

LINQ初学者指南

在Stack Overflow测试期间,我看到了很多关于LINQ SQL的问题,但对它一无所知......这听起来很有趣.

什么是LINQ,我该如何开始?

链接指南或文档奖金:)

PS:我是一名长期使用Datatables和Parameterized SQL的C#开发人员

linq .net-3.5

36
推荐指数
6
解决办法
2万
查看次数

BFS和DFS运行时的说明

为什么BFS和DFS O(V + E)的运行时间,特别是当有一个节点具有可以从顶点到达的节点的有向边时,就像在以下站点中的此示例中一样

http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/GraphAlgor/depthSearch.htm

graph breadth-first-search time-complexity depth-first-search data-structures

36
推荐指数
4
解决办法
8万
查看次数

检查特定的exe文件是否正在运行

我想知道如果程序正在运行,我可以检查特定位置的程序.例如,c:\ loc1\test.exe和c:\ loc2\test.exe中的test.exe有两个位置.我只想知道c:\ loc1\test.exe是否正在运行,而不是所有的test.exe实例.

c# process-management

35
推荐指数
4
解决办法
5万
查看次数

如何实现广度优先遍历?

这就是我所拥有的.我以为预购是一样的,先把它与深度混合起来!

import java.util.LinkedList;
import java.util.Queue;

public class Exercise25_1 {
  public static void main(String[] args) {

    BinaryTree tree = new BinaryTree(new Integer[] {10, 5, 15, 12, 4, 8 });

    System.out.print("\nInorder: ");
    tree.inorder();
    System.out.print("\nPreorder: ");
    tree.preorder();
    System.out.print("\nPostorder: ");
    tree.postorder();

    //call the breadth method to test it

    System.out.print("\nBreadthFirst:");
    tree.breadth();

  }
}

class BinaryTree {
  private TreeNode root;


  /** Create a default binary tree */
  public BinaryTree() {
  }

  /** Create a binary tree from an array of objects */
  public BinaryTree(Object[] objects) { …
Run Code Online (Sandbox Code Playgroud)

java breadth-first-search

34
推荐指数
4
解决办法
10万
查看次数

Windows上的Java串行通信

我一直在寻找可以与Windows/Win32上的串行设备通信的Java API,但我检查过的许多API要么是用于Linux,要么过时,要么就是批评不好的人.

有人可以向我推荐一个他们已经尝试或知道的在Windows XP上易于实现吗?

java windows serial-port

32
推荐指数
3
解决办法
4万
查看次数

如何从除创建它之外的线程读取组合框?

我试图从一个线程读取一个combobox.Text而不是它创建的线程,但我收到错误:

System.Windows.Forms.dll中发生了未处理的"System.InvalidOperationException"类型异常

附加信息:跨线程操作无效:控制'levelsComboBox'从其创建的线程以外的线程访问.

我之前使用过.Invoke但只是设置属性,我怎么用它来读取combobox.Text?因为.Invoke返回void,我需要一个字符串.或者没有Invoke有另一种方法吗?

c# multithreading invoke thread-safety

28
推荐指数
3
解决办法
3万
查看次数