示例#1
0
文件: fibo.c 项目: danfis/boruvka
bor_fibo_node_t *borFiboExtractMin(bor_fibo_t *f)
{
    bor_list_t *item;
    bor_fibo_node_t *min, *n;

    if (!f->min)
        return NULL;

    min = f->min;

    // put all children to root list
    while (!borListEmpty(&min->children)){
        item = borListNext(&min->children);
        n    = BOR_LIST_ENTRY(item, bor_fibo_node_t, list);

        borListDel(item);
        borListAppend(&f->root, item);
        n->parent = NULL;
    }

    // remove minimum from root list
    borListDel(&min->list);

    __borFiboConsolidate(f);

    return min;
}
示例#2
0
文件: gug.c 项目: danfis/boruvka
static void el6New(el6_t *ns, size_t len, bor_list_t *head)
{
    size_t i, j;

    borListInit(head);

    for (i = 0; i < len; i++){
        for (j = 0; j < 6; j++){
            borVecSet(ns[i].v, j, borRand(&r, -10., 10.));
        }

        borGUGElInit(&ns[i].c, ns[i].v);

        borListAppend(head, &ns[i].list);
    }
}
示例#3
0
文件: gug.c 项目: danfis/boruvka
static void elNew(el_t *ns, size_t len, bor_list_t *head)
{
    size_t i;
    bor_real_t x, y;

    borListInit(head);

    for (i = 0; i < len; i++){
        x = borRand(&r, -10., 10.);
        y = borRand(&r, -10., 10.);

        borVec2Set(&ns[i].v, x, y);
        borGUGElInit(&ns[i].c, (const bor_vec_t *)&ns[i].v);

        borListAppend(head, &ns[i].list);
    }
}
示例#4
0
static void _nnAddRm(uint8_t type, bor_nn_params_t *params)
{
    bor_rand_mt_t *rand;
    bor_nn_t *nn;
    static bor_list_t els_list;
    static int els_len = ADD_ELS_LEN;
    static el_t els[ADD_ELS_LEN];
    int i, j;

    rand = borRandMTNewAuto();

    params->type = type;
    nn = borNNNew(params);

    borListInit(&els_list);
    for (i = 0; i < els_len; i++){
        borVec2Set(&els[i].w, borRandMT(rand, -3, 3), borRandMT(rand, -3, 3));
        borNNElInit(nn, &els[i].el, (const bor_vec_t *)&els[i].w);
        borListAppend(&els_list, &els[i].list);
    }

    for (i = 0; i < ADD_ELS_LEN; i++){
        //fprintf(stdout, "%02d:\n", i);
        borNNAdd(nn, &els[i].el);
        //borNNDump(vp, stdout);
    }

    for (i = 0; i < ADD_ELS_LEN; i += 3){
        borNNRemove(nn, &els[i].el);
        borListDel(&els[i].list);
    }

    for (i = 0; i < ADD_NUM_TESTS; i++){
        for (j = 1; j <= ADD_NUM_NNS; j++){
            test2(rand, nn, &els_list, j);
        }
    }

    borNNDel(nn);
    borRandMTDel(rand);
}