我的算法如下所示。它对服务器进行远程调用并获取结果处理它们并再次将远程调用发送到系统。你能告诉我这个算法的时间和空间复杂性吗?
Get search keyword from user
ϕ := getInfoFromConceptNet(keyword) // makes remote call
e := expandConcepts(ϕ)
expConcepts := {} // adds to an array
for each ec in e // first loop
expConcepts.add(ec) // adds to array
α= expandConcept(ec) //remote call
expConcepts.add(α) // adds to array
αkeywords=getKeywords(α) // calls a function to remove stopwords
for each αkw in αkeywords // second loop
Ω= expandConcept(αkw) // makes remote call
expConcepts.add(Ω) // adds to an array
results[ ]=performsearch(expConcepts,additional information) // searches the array
答案 0 :(得分:1)
你的第二个循环嵌套到第一个?如果是,下面给出的复杂性分析代表您的算法。
此算法的时间和空间复杂性取决于expandConcept()
,getKeywords()
,add()
和performsearch()
函数的实现。对于add()
,如果只是将其参数附加到expConcepts数组前面索引,则时间和空间复杂度可能为O(1)
。假设performsearch()
执行二进制搜索,其中O(logN)
(N
:expConcepts元素的数量),时间复杂度和常量空间复杂度,以及额外的O(M*(expandConcept() time-comp)*K*(expandConcept() time-comp))
({{ 1}}:设置e的基数,M
:关键字的基数),您有 K
时间复杂度。空间复杂性取决于O(M*(expandConcept time-comp)*K*(expandConcept() time-comp)*logN)
空间复杂度。