Я пытаюсь построить график в C, имеющий такую структуру данных:
- Фильтр Блума, представляющий график
- Список всех узлов
- первый узел графика (в градусах == 0)
- Массив, содержащий все узлы, смежные с другим узлом
Я пытаюсь распечатать график, используя этот метод, но это нене начинать с известного first node
:
file = fopen("out/graph.dot", "w");
fprintf(file, "digraph G {\n");
key_list = hash_table_keys(hash_table);
edge = NULL;
sub_kmer = NULL;
while ( key_list != NULL ) {
sub_kmer = substr(key_list->key, 1, strlen(key_list->key));
edge = kmer_append(sub_kmer);
for ( i = 0; i < NUM_BASE; i++ ) {
if ( bloom_filter_get(bloom_filter, edge[i]) ) {
fprintf(file, " %s ", key_list->key);
fprintf(file, "-> ");
fprintf(file, "%s \n", edge[i]);
}
free(*(edge + i));
}
free(sub_kmer);
free(edge);
key_list = key_list->next;
}
fprintf(file, "}");
fclose(file);
Где:
substr
вычислить подстроку строки kmer_append
присоединить кподстрока символов (A, C, G, T) bloom_filter_get
проверяет, находится ли узел в фильтре Блума
Существуют ли методы для печати графика с использованием толькоfirst node
, bloom filter
и adjacenty array
?