2011-06-11 81 views
6

我需要從存儲在樹中的出版物列表中計算​​。計算h指數

我所做的是遍歷樹在變小訂單獲取引文

它看起來像的位置數的列表:

line 1 10 
line 2 5 
line 3 4 
line 4 0 

我應該在3線停止並返回3.問題是給出的例子,在這種情況下

line 1 4 
line 2 0 
line 3 0 

它停在2因爲4> 1但0> 3是錯誤的。它應該返回1。你能解釋我爲什麼嗎?我知道它更像是一個數學問題,但在此之後,如果出現嚴重錯誤,我可能需要重新實施它。

這裏是我錯過了一些微妙的代碼

int index_h_calc(rbtree_node n, int *i){ 
    if (n == NULL) { 
     fputs("<empty tree>\n", stdout); 
     return 0; 
    } 
    if (n->right != NULL) 
     index_h_calc(n->right,i); 


    graduat *grad; 
    grad=n->value; 

    if(DEBUG) 
     printf("linea %d %d %s\n ",*i,(int)grad->tot,grad->name); 

    if(*i+1>=(int)grad->tot) { 
     return *i; 
    } else 
     *i+=1; 

    if (n->left != NULL) 
     index_h_calc(n->left,i); 

    return *i; 
    } 

回答

0

這對github幾種解決方案,例如在Ruby中,相當於你ncitePages和作爲h-index計算

function h_index(){ 
     var hArray = new Array(); 
     var x = 0; 
     for(var i = 0; i < citePages.length; i++){ 
      var citeArray = citePages[i];   
      for(var j = 0; j < citeArray.length; j++){ 
       // The multiplication by one is a hack to convert the string type into a numerical type 
       hArray[x++] = citeArray[j]*1; 
      } 
     } 
     hArray.sort(sortNumber); 
     //alert(hArray); 
     for(var i = 0; i < hArray.length; i++){ 
      if(i > hArray[i]){ 
       return hArray[i-1]; 
      } 
     } 
    } 

先前的功能 -

function getCitationCount(responseText){ 
    if (responseText == null){ 
    _gel("sContent").innerHTML = "<i>Invalid data.</i>"; 
      alert("There is no data."); 
     return; 
     } 

var cite_exists = 1; 
var cite_str_len = 14; 
var len_of_Cite_by_str = 9; 
var citeArray = new Array(); 
for(var i = 0; cite_exists > 0; i++) 
    { 
    cite_exists = responseText.search('Cited by'); 
    if(cite_exists == -1){ 
     //alert("No more citations for given Author!"); 
     //return; 
    }else{ 
     var tmp_string = responseText.substr(cite_exists, cite_str_len); 
     var end = (tmp_string.indexOf("<")-len_of_Cite_by_str); 
     citeArray[i] = tmp_string.substr(len_of_Cite_by_str, end); 
     publications++; 
     responseText = responseText.substr(cite_exists+cite_str_len, responseText.length); 
    } 
} 
return citeArray; 
} 

如果不提供解決方案,那麼問題是可以驗證的 - 所以我們確實需要示例數據,例如一組典型數據,說明每種情況下預期的結果,假設這是一個數學r而不是編碼問題,只能用填充的複雜數據結構進行測試。

0

也許吧,但不只是減一的行號的答案嗎?也就是說,如果i是行號,n是引用次數,則遍歷該樹,直到找到與n < i相符的行,然後將h索引作爲i - 1返回。

+0

......應該不是,「然後返回h-index爲* n * - 1」?否則,這聽起來對我來說... – Dmitri 2011-12-28 21:15:40

+0

@Dmitri:不,它必須是'我 - 1'。考慮OT的第一個例子:我們在第4行停止(因爲'0'4')並且返回'4-1 = 3'的h索引。在第二個例子中,我們停在第2行並返回1。 – deprecated 2011-12-30 23:19:26

+0

哎呀..當我寫道,因爲某種原因,我腦子裏有'n'和''後腦。 – Dmitri 2011-12-30 23:36:34