Devo calcolare lo h-index da un elenco di pubblicazioni memorizzate in un albero.Calcolo dell'indice h
quello che ho fatto sta attraversando l'albero in modo decrescent ottenere un elenco di posizione di numero di citazioni
Assomiglia:
line 1 10
line 2 5
line 3 4
line 4 0
dovrei smettere alla linea 3 e restituire 3. Il problema è con gli esempi forniti in questo caso
line 1 4
line 2 0
line 3 0
si arresta a causa 2 4> 1 ma 0> 3 è falso. Dovrebbe restituire 1 invece. Puoi spiegarmi perché? So che è più una domanda di matematico, ma dopo avrò bisogno di ri-implementarlo se qualcosa è profondamente sbagliato.
Ecco il codice
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;
}
... non dovrebbe essere ", quindi restituire l'h-index come * n * - 1"? Altrimenti mi sembra giusto ... – Dmitri
@Dmitri: no, deve essere 'i - 1'. Considera il primo esempio dell'OT: ci fermiamo alla riga 4 (perché '0 <4') e restituiamo un h-index di' 4 - 1 = 3'. Nel secondo esempio, ci fermiamo alla riga 2 e restituiamo '1'. – deprecated
Oops .. Quando ho scritto che avevo 'n' e' i' indietro nella mia mente per qualche motivo. – Dmitri