Algorithm 什么算法具有高时间复杂度,以帮助;“燃烧”;更多的CPU周期?

Algorithm 什么算法具有高时间复杂度,以帮助;“燃烧”;更多的CPU周期?,algorithm,complexity-theory,time-complexity,Algorithm,Complexity Theory,Time Complexity,我正在尝试为嵌入式处理器编写一个演示,它是一个多核架构,浮点计算速度非常快。问题是,我目前使用的硬件是通过评估板连接的处理器,其中DRAM到芯片的速率有些有限,而板到PC的速率非常慢且效率低下 因此,在演示大型矩阵乘法时,我可以在几毫秒内完成128x128个矩阵,但I/O需要(很多)秒才能完成演示 因此,我正在寻找一种比n^3复杂度更高的计算,越复杂越好(但最好易于编程和解释/理解),以使计算部分在时间预算中更占主导地位,其中数据集最好绑定到每个线程(核心)约16KB 有什么建议吗 附言:我认为

我正在尝试为嵌入式处理器编写一个演示,它是一个多核架构,浮点计算速度非常快。问题是,我目前使用的硬件是通过评估板连接的处理器,其中DRAM到芯片的速率有些有限,而板到PC的速率非常慢且效率低下

因此,在演示大型矩阵乘法时,我可以在几毫秒内完成128x128个矩阵,但I/O需要(很多)秒才能完成演示

因此,我正在寻找一种比n^3复杂度更高的计算,越复杂越好(但最好易于编程和解释/理解),以使计算部分在时间预算中更占主导地位,其中数据集最好绑定到每个线程(核心)约16KB

有什么建议吗

附言:我认为它在本质上与问题非常相似。

你能做的是

  • 声明int的std::vector
  • N-1
    0
  • 现在继续重复使用std::next_置换,直到它们再次排序,即next_置换返回false
  • 对于
    N
    整数,这将需要
    O(N!)
    计算和确定性

    您可以做的是

  • 声明int的std::vector
  • N-1
    0
  • 现在继续重复使用std::next_置换,直到它们再次排序,即next_置换返回false

  • 使用
    N
    整数,这将需要
    O(N!)
    计算和确定性

    您可以生成大的(256位)数字并将其因子化;这通常用于“压力测试”工具中。如果你特别想进行浮点计算,你可以用龙格-库塔积分器构建一个基本的n体模拟器,然后运行它。

    你可以生成大的(256位)数并将其因子化;这通常用于“压力测试”工具中。如果您特别想进行浮点计算,您可以使用Runge-Kutta积分器构建一个基本的n体模拟器并运行它。

    一种方法是在某些M空间(M>1)中实现旅行商问题的蛮力解算器

    蛮力解决方案是只尝试每一种可能的排列,然后计算每一种排列的总距离,而不进行任何优化(不包括像记忆这样的动态编程技巧)

    对于N个点,有(N!)个置换(冗余因子至少为(N-1),但请记住,没有优化)。每对点需要(M)减法、(M)乘法和一个平方根运算来确定它们之间的勾股线距离。每个排列都有(N-1)对点要计算并添加到总距离中

    所以计算的顺序是O(M((N+1)!),而存储空间只有O(N)


    此外,这也不应该太难,也不应该太密集,无法跨核心并行,尽管它确实会带来一些开销。(如果需要的话,我可以演示。)

    一种方法是在一些M空间(M>1)中实现旅行商问题的蛮力解算器

    蛮力解决方案是只尝试每一种可能的排列,然后计算每一种排列的总距离,而不进行任何优化(不包括像记忆这样的动态编程技巧)

    对于N个点,有(N!)个置换(冗余因子至少为(N-1),但请记住,没有优化)。每对点需要(M)减法、(M)乘法和一个平方根运算来确定它们之间的勾股线距离。每个排列都有(N-1)对点要计算并添加到总距离中

    所以计算的顺序是O(M((N+1)!),而存储空间只有O(N)


    此外,这也不应该太难,也不应该太密集,无法跨核心并行,尽管它确实会带来一些开销。(如果需要,我可以演示)。

    可能很适合。作为一个线性代数问题,人们反复地对某个大小可控的浮点矩阵求平方,直到收敛。在图形隐喻中,一个“涟漪”变化进入每个节点到其他边上。两种治疗方法都可以平行进行。

    可能很适合。作为一个线性代数问题,人们反复地对某个大小可控的浮点矩阵求平方,直到收敛。在图形隐喻中,一个“涟漪”变化进入每个节点到其他边上。两种处理方法都可以平行进行。

    您可以进行最小修剪平方拟合。它的一个用途是识别数据集中的异常值。例如,您可以从某个平滑函数(比如多项式)生成样本,并向某些样本添加(大)噪声,然后问题是找到给定大小样本的子集H,该子集使残差平方和最小化(对于拟合到H中样本的多项式)。因为有很多这样的子集,你有很多适合做!例如,有一些近似算法。

    您可以进行最小二乘拟合。它的一个用途是识别数据集中的异常值。例如,您可以从某个平滑函数(比如多项式)生成样本,并向某些样本添加(大)噪声,然后问题是找到给定大小样本的子集H,该子集使残差平方和最小化(对于拟合到H中样本的多项式)。因为有很多这样的子集,你有很多适合做!例如,有一些近似算法。

    另一个想法可能是计算分形地图。基本上,选择任意维度的网格。然后,对每个网格点进行分形