我试图在我的Windows 7机器上配置Hadoop.我能够启动名称节点和其他服务,但是当我运行Hadoop包(版本1.0.3)附带的示例时,会出现以下错误:
bin/hadoop: line 320 : C:\Program: Command not found.
Run Code Online (Sandbox Code Playgroud)
我使用以下命令运行该示例:
bin/hadoop jar hadoop-examples-1.0.3.jar pi 10
Run Code Online (Sandbox Code Playgroud)
我打开了这个hadoop错误发生的文件,发现第320行正在生成一个路径:
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
Run Code Online (Sandbox Code Playgroud)
所以我觉得问题可能在这个JAVA变量中,因为Cygwin对路径名使用不同的约定.有没有人也遇到过这个问题或者知道是什么导致了这个问题?
我正在阅读关于BFS和DFS的图算法.当我分析通过DFS在Graph中查找强连通分量的算法时,我想到了一个疑问.为了找到强连通分量,什么书(Coremen)做,首先它在图上运行DFS以获得顶点的结束时间然后再次按照完成时间的降序在图的转置上运行DFS我们从第一个DFS得到的.但是我无法理解为什么第二个DFS必须按照完成时间运行.我的意思是即使我们直接在图的转置上运行DFS(忽略完成时间),它是否也给了我们连接的组件,因为通过转置我们已经阻止了到其他组件的路径.
问题陈述如下:给定N.我们需要找到x1,x2,..,xp这样N = x1 + x2 + .. + xp,p必须是最小的(指在和项数),我们还必须能够从子集的总和从1得到的所有号码(N-1)( x1,x2,x3..xp).集合中的数字也可能重复.
例如,如果N = 7.
7 = 1+2+4
而且6= (2,4),5= (4,1),4 = (4),3=(1,2)等等.
例2:
8 = 1+2+4+1
例3 :(无效)8 = 1 + 2 + 5但是我们不能从(1,2,5)的子集中得到4.所以(1,2,5)不是有效的组合
我的方法是,如果'N-1'可以写成p项的总和而不是'N'要么有p或p + 1项.但是这种方法需要检查所有可能的组合,总和达到"N-1"并具有"p"项.任何人都可以有更好的解决方案吗?
解决方案:第1
步:假设我们的集合中有"K"条目作为答案.因此,我们可以从这些数字中获得2 ^ K个不同数量的和,因为每个条目将出现或不出现在总和中.而且如果数字是"N",我们需要计算'1'到'N'的总和.因此
(2 ^ K -1)= N
K = log(N + 1)
步骤2:
在步骤1 之后,我们知道我们的答案必须包括"K"条目,但这些条目实际上是什么?假设我们的条目是(a1,a2,a3 ...... ak).因此,数字P可写为P = a1*b1 + a2*b2 + …