libFirm
Loading...
Searching...
No Matches
bipartite.h
1/*
2 * This file is part of libFirm.
3 * Copyright (C) 2012 University of Karlsruhe.
4 */
5
12#ifndef FIRM_ADT_BIPARTITE_H
13#define FIRM_ADT_BIPARTITE_H
14
15#include <stdio.h>
16
17#include "../begin.h"
18
28typedef struct bipartite_t bipartite_t;
29
32FIRM_API bipartite_t *bipartite_new(unsigned n_left, unsigned n_right);
34FIRM_API void bipartite_free(bipartite_t *gr);
36FIRM_API void bipartite_add(bipartite_t *gr, unsigned i, unsigned j);
38FIRM_API void bipartite_remv(bipartite_t *gr, unsigned i, unsigned j);
41FIRM_API int bipartite_adj(bipartite_t const *gr, unsigned i, unsigned j);
43FIRM_API void bipartite_matching(bipartite_t const *gr, int *matching);
44
48FIRM_API void bipartite_dump_f(FILE *f, bipartite_t const *gr);
49
53FIRM_API void bipartite_dump(char const *name, bipartite_t const *gr);
54
57#include "../end.h"
58
59#endif
void bipartite_add(bipartite_t *gr, unsigned i, unsigned j)
Add edge from i (on the left side) to j (on the right side)
void bipartite_matching(bipartite_t const *gr, int *matching)
Solve bipartite matching problem.
void bipartite_dump(char const *name, bipartite_t const *gr)
Dumps a bipartite graph to file name.
bipartite_t * bipartite_new(unsigned n_left, unsigned n_right)
Create new bipartite matching problem with n_left elements on left side and n_right elements on right...
void bipartite_free(bipartite_t *gr)
Free memory occupied by bipartite matching problem.
int bipartite_adj(bipartite_t const *gr, unsigned i, unsigned j)
Return 1 if edge from i (on the left side) to j (on the right side) exists, 0 otherwise.
struct bipartite_t bipartite_t
internal representation of bipartite matching problem
Definition bipartite.h:28
void bipartite_dump_f(FILE *f, bipartite_t const *gr)
Dumps a bipartite graph to a file stream.
void bipartite_remv(bipartite_t *gr, unsigned i, unsigned j)
Remove edge from i (on the left side) to j (on the right side)