【问题标题】:What is a collaborative algorithm?什么是协作算法?
【发布时间】:2013-11-16 11:09:15
【问题描述】:

什么是协作算法?是否有科学可引用的参考资料?


详情:

  • 我找到了many articles about collaborative algorithms,但没有找到(或其他网站)有定义。
  • 我实际上是在寻找一个术语来描述分布式算法,其中每个实例在开始时都拥有所有信息并且可以自己完成整个任务,但是只要实例解决了一个子问题,它们就会互相帮助,所以其他实例不必重做工作(因此是“协作”)。我在A Collaborative Approach for Multi-Threaded SAT Solving 中使用了这个术语。你认为“协同算法”这个词适合这个吗?如果没有,您知道更好的术语吗?

【问题讨论】:

  • 想对 -1 发​​表评论或如何改进我的问题?

标签: algorithm parallel-processing terminology distributed-computing


【解决方案1】:

我认为“协作算法”这个词并不正式。 实际上,“算法”这个词本身并不是很正式, 就目前我所记得的。我猜算法可以形式化为 “在图灵机上运行的程序”。我想我见过 这个定义在某处。

所以是的,我想你创造的所有术语都是有道理的,但是你 需要以某种方式自己定义(正式或非正式)。

不确定你的背景是什么,但是……好吧,在科学论文中 不同的作者有时使用相同的术语/概念来表示 不同的事物,有时他们使用不同的术语 表示相同的东西。

此外,即使计算机科学论文是科学的, 其中的所有术语都是正式定义的。所以我不会画画 除非我熟悉,否则基于这些论文得出的结论太多 在相当程度上与他们所有人或除非他们中的一些人 被认为非常了不起并被广泛接受为 特定子领域或领域的事实标准。

【讨论】:

    【解决方案2】:

    不,没有科学可引用的参考资料。

    从某种意义上说,所有并行/分布式编程都是“协作”的,即多个线程/节点在同一个大任务上进行协作。

    分布式算法,其中.. 实例在解决子问题时相互帮助 - 甚至一些 Web 应用程序集群也符合您的描述:单个集群节点“解决子问题”并存储“解决方案”在分布式内存存储(例如 memcached 或 cassandra 或许多其他)中,从而相互帮助。

    【讨论】:

    • 好点,任何交流都可以被认为是协作(+1)我想交流的是,只要有足够的时间,每个实例都可以自己解决整个问题。我相信这就是我引用的论文的意思,但是如果没有他们定义“协作算法”就很难说:(
    • 只要有足够的时间,每个实例都可以自行解决整个问题——同样,这适用于几乎任何计算集群/分布式系统。以 fold@home 为例:只要有足够的时间,一台 PC 就可以计算出所有蛋白质的形状。但是,向系统添加节点会减少解决问题的时间。
    • 嗯,如果我在看林奇的分布式算法,似乎大多数问题只能通过多个进程一起解决(或者单独考虑一个节点没有问题需要解决)。在实践中,您可能是对的,但这更是给这种区别一些名称/术语的原因。
    • 你看的是1996年出版的书。现在,这本书所涉及的问题要么根本不相关(例如令牌环网络中的领导者选举),要么只相关到一些狭窄的区域(数据包路由,或共享内存集群的低级系统编程)。虽然大多数进行并行/分布式编程的软件开发人员(包括那些为共享内存集群开发的软件开发人员)都将时间花在不同的问题上。免责声明:我只在一些使用商品服务器构建的中型集群上工作。我从来没有为超级计算机开发过。
    • 你知道amazon.com/…吗?我只是看了一眼,但其中涵盖的算法类别还包括林奇书中的那些……
    猜你喜欢
    • 2018-01-07
    • 2011-04-28
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 2017-08-06
    相关资源
    最近更新 更多