Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何提高我的算法时间复杂度?_Algorithm_Time Complexity - Fatal编程技术网

Algorithm 如何提高我的算法时间复杂度?

Algorithm 如何提高我的算法时间复杂度?,algorithm,time-complexity,Algorithm,Time Complexity,我们有n个文件,对于每个文件,m行,我们要进行一些操作,要继续所有文件和行,显然要应用以下算法: int n; //n is the number of files int m; //m is the number of the lines in the file i. for(i=0;i<n;i++){ for(j=0;j<m;j++){ ..... } } 因此,我们有一个Onxm复杂性 我的问题是: 是否有可能通过以下方式使其成

我们有n个文件,对于每个文件,m行,我们要进行一些操作,要继续所有文件和行,显然要应用以下算法:

int n;    //n is the number of files 
int m;   //m is the number of the lines in the file i.
for(i=0;i<n;i++){
   for(j=0;j<m;j++){
            .....
   }
}
因此,我们有一个Onxm复杂性

我的问题是:

是否有可能通过以下方式使其成为Onlogn或其他方法来提高算法的时间复杂度:

1-保留所有文件和行

2-我们可以忽略其中一些


最好的祝愿

如果你想处理渐进的复杂性,那么就要严格

最初的复杂性很可能是ΘF L,但您没有指定处理,其中F表示文件数,L表示每个文件的平均行数。不过,由于行长度可能会有所不同,因此以平均字符数来表示会更安全

如果你处理的文件数量和F中的位数一样多,那么复杂度确实会降低到ΘlogF L。但是如果你处理其他每一个文件,甚至是其中的十分之一,那么复杂度仍然是ΘF L

没有什么神奇的方法可以降低问题的复杂性。有时您可以得到改进,因为初始算法效率不高,有时您不能。在本例中,虽然这取决于特定的处理过程,但您可能无法做到这一点

通过对文件进行二次采样所做的工作并不是一种复杂性改进:它是一种减少问题大小的欺骗,并且不再解决初始问题

可以通过跳过n/logn文件来实现m logn 或

可以通过跳过每个文件的m/logm行来实现n logm。
这是什么语言和平台?根本不清楚您在这里要问什么-您提供的代码将输出包含单个*的2*N行。这是否意味着要可视化完成了多少工作?代码只是一个示例,但我的目标是从一个具有两个循环的算法(处理所有文件和文件行)转变为一个只处理50%或70%文件的算法files@hager我进一步修改了这个问题precision@MEHDISAOUDI:你的问题比以前更模糊了。我该如何改进我的情况有多复杂?知道我可以忽略一些文件而不处理它们。我的实际算法就像‘所有文件都要{所有行都要{处理}}’@MEHDISAOUDI:有些文件叫什么?请说清楚。依我看,你太专注于降低复杂性,你最好告诉我们你试图解决的真正问题。一股XY问题的味道。这意味着我只能处理100个文件中的50或40个,以减少时间复杂性,但如何处理,是我的问题。我有文件,每个文件上都有一组行,我用数学公式处理它们,以获得代表文件的签名,处理100个文件需要花费我大量的时间,所以我必须尽量减少处理时间,但我还必须证明,理论上,我试图转移到一个不同于二次的复杂度,修改问题以获得更高的精度