testing things
thinking of how to display the ants moving and optimise by moving at least one on each path
This commit is contained in:
parent
0a9d7b816d
commit
c36f501b08
4
Makefile
4
Makefile
@ -6,7 +6,7 @@
|
|||||||
# By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ #
|
# By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2019/03/27 16:51:02 by tmaze #+# #+# #
|
# Created: 2019/03/27 16:51:02 by tmaze #+# #+# #
|
||||||
# Updated: 2019/04/05 13:54:08 by tmaze ### ########.fr #
|
# Updated: 2019/04/05 15:14:01 by tmaze ### ########.fr #
|
||||||
# #
|
# #
|
||||||
#******************************************************************************#
|
#******************************************************************************#
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ SRC = lm_parser.c \
|
|||||||
bfs.c \
|
bfs.c \
|
||||||
lst_ind.c \
|
lst_ind.c \
|
||||||
edmunds_karp.c \
|
edmunds_karp.c \
|
||||||
# lem_in.c \
|
# lem_in.c
|
||||||
|
|
||||||
|
|
||||||
OBJ = $(SRC:.c=.o)
|
OBJ = $(SRC:.c=.o)
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
|
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2019/03/27 14:41:49 by tmaze #+# #+# */
|
/* Created: 2019/03/27 14:41:49 by tmaze #+# #+# */
|
||||||
/* Updated: 2019/04/05 13:24:22 by tmaze ### ########.fr */
|
/* Updated: 2019/04/05 17:43:11 by tmaze ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
|
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2019/03/28 16:21:19 by tmaze #+# #+# */
|
/* Created: 2019/03/28 16:21:19 by tmaze #+# #+# */
|
||||||
/* Updated: 2019/04/03 17:18:35 by tmaze ### ########.fr */
|
/* Updated: 2019/04/05 15:13:53 by tmaze ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -78,8 +78,6 @@ t_ind **resolve_path(t_lmdata *data, int s_ind, int e_ind
|
|||||||
return (clean_ret(ret));
|
return (clean_ret(ret));
|
||||||
j = reset_weights(data, s_ind, j);
|
j = reset_weights(data, s_ind, j);
|
||||||
}
|
}
|
||||||
if (j != -1 && lst_indadd(&(ret[i]), j) == NULL)
|
|
||||||
return (clean_ret(ret));
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -92,6 +90,8 @@ t_ind **edmunds_karp(t_lmdata *data, int start_ind, int end_ind)
|
|||||||
int nb_path;
|
int nb_path;
|
||||||
|
|
||||||
nb_path = 0;
|
nb_path = 0;
|
||||||
|
if (data && data->adj)
|
||||||
|
{
|
||||||
bfs(data, tab, start_ind, end_ind);
|
bfs(data, tab, start_ind, end_ind);
|
||||||
while (tab[end_ind].parent != -1)
|
while (tab[end_ind].parent != -1)
|
||||||
{
|
{
|
||||||
@ -100,4 +100,6 @@ t_ind **edmunds_karp(t_lmdata *data, int start_ind, int end_ind)
|
|||||||
bfs(data, tab, start_ind, end_ind);
|
bfs(data, tab, start_ind, end_ind);
|
||||||
}
|
}
|
||||||
return (resolve_path(data, start_ind, end_ind, nb_path));
|
return (resolve_path(data, start_ind, end_ind, nb_path));
|
||||||
|
}
|
||||||
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: mndhlovu <marvin@42.fr> +#+ +:+ +#+ */
|
/* By: mndhlovu <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2019/03/25 06:31:05 by mndhlovu #+# #+# */
|
/* Created: 2019/03/25 06:31:05 by mndhlovu #+# #+# */
|
||||||
/* Updated: 2019/04/05 13:43:21 by tmaze ### ########.fr */
|
/* Updated: 2019/04/05 14:40:50 by tmaze ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ int main(int ac, char **av)
|
|||||||
t_lmdata ldata;
|
t_lmdata ldata;
|
||||||
t_holder holder;
|
t_holder holder;
|
||||||
int fd;
|
int fd;
|
||||||
t_list *it;
|
t_node *it;
|
||||||
t_node *start;
|
t_node *start;
|
||||||
t_node *end;
|
t_node *end;
|
||||||
|
|
||||||
@ -44,17 +44,23 @@ int main(int ac, char **av)
|
|||||||
{
|
{
|
||||||
//validation works
|
//validation works
|
||||||
ft_printf("Success\n");
|
ft_printf("Success\n");
|
||||||
it = ldata.nodes;
|
ft_printf("=== ldata ===\nnbants: %d\nnb_nodes: %d\nnodes: %p\nnodes_data: %p\nadj: %d\n\n", ldata.nbants, ldata.nb_nodes, ldata.nodes, ldata.nodes_data, ldata.adj);
|
||||||
while (it && ((t_node*)(it->content))->role != 's')
|
it = ldata.nodes_data;
|
||||||
|
while (it && it->role != 's')
|
||||||
{
|
{
|
||||||
ft_printf("=== node ===\nindex: %d\nrole: %c\n\n", ((t_node*)(it->content))->ind, ((t_node*)(it->content))->role);
|
ft_printf("=== node ===\nindex: %d\nrole: %c\n\n", it->ind, it->role);
|
||||||
it = it->next;
|
it = it->next;
|
||||||
}
|
}
|
||||||
start = it->content;
|
ft_printf("=== node ===\nindex: %d\nrole: %c\n\n", it->ind, it->role);
|
||||||
it = ldata.nodes;
|
start = it;
|
||||||
while (it && ((t_node*)(it->content))->role != 'e')
|
it = ldata.nodes_data;
|
||||||
|
while (it && it->role != 'e')
|
||||||
|
{
|
||||||
|
ft_printf("=== node ===\nindex: %d\nrole: %c\n\n", it->ind, it->role);
|
||||||
it = it->next;
|
it = it->next;
|
||||||
end = it->content;
|
}
|
||||||
|
ft_printf("=== node ===\nindex: %d\nrole: %c\n\n", it->ind, it->role);
|
||||||
|
end = it;
|
||||||
edmunds_karp(&ldata, start->ind, end->ind);
|
edmunds_karp(&ldata, start->ind, end->ind);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
185
srcs/test.c
185
srcs/test.c
@ -6,19 +6,60 @@
|
|||||||
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
|
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2019/03/28 11:37:06 by tmaze #+# #+# */
|
/* Created: 2019/03/28 11:37:06 by tmaze #+# #+# */
|
||||||
/* Updated: 2019/04/05 13:59:02 by tmaze ### ########.fr */
|
/* Updated: 2019/04/05 17:43:06 by tmaze ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "lem_in.h"
|
#include "lem_in.h"
|
||||||
|
|
||||||
#define NB_NODES 4
|
#define NB_NODES 8
|
||||||
|
#define NB_ANTS 20
|
||||||
|
|
||||||
int add_link(t_lmdata *data, int n1, int n2)
|
int add_link(t_lmdata *data, int n1, int n2)
|
||||||
{
|
{
|
||||||
return (lst_indadd(&(data->adj[n1]), n2) && lst_indadd(&(data->adj[n2]), n1));
|
return (lst_indadd(&(data->adj[n1]), n2) && lst_indadd(&(data->adj[n2]), n1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t_node *get_node(t_lmdata *data, int index)
|
||||||
|
{
|
||||||
|
t_node *it;
|
||||||
|
|
||||||
|
it = data->node_data;
|
||||||
|
while (it && it->index != index)
|
||||||
|
it = it->next;
|
||||||
|
return (it);
|
||||||
|
}
|
||||||
|
|
||||||
|
void push_ants(t_lmdata *data, t_ind **paths, int nb_paths, int nb_ants)
|
||||||
|
{
|
||||||
|
t_ind *its[nb_path];
|
||||||
|
int ant_p[nb_path];
|
||||||
|
int ant_c;
|
||||||
|
int i;
|
||||||
|
char end;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
end = 0;
|
||||||
|
while (i < nb_paths)
|
||||||
|
{
|
||||||
|
its[i] = paths[i];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
ant_c = 0;
|
||||||
|
while (++ant_c <= nb_paths)
|
||||||
|
ant_p[ant_c - 1] = ant_c]
|
||||||
|
while (!end)
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
while (i < nb_paths)
|
||||||
|
{
|
||||||
|
ft_printf("L%d-%s", ant_p[i], get_node(data, its[i]->index)->name);
|
||||||
|
if (i < nb_path - 1)
|
||||||
|
ft_putchar(' ');
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
t_lmdata data;
|
t_lmdata data;
|
||||||
@ -29,8 +70,73 @@ int main(void)
|
|||||||
data.nb_nodes = NB_NODES;
|
data.nb_nodes = NB_NODES;
|
||||||
if ((data.adj = (t_ind**)ft_memalloc(sizeof(t_ind*) * NB_NODES)) == NULL)
|
if ((data.adj = (t_ind**)ft_memalloc(sizeof(t_ind*) * NB_NODES)) == NULL)
|
||||||
return (1);
|
return (1);
|
||||||
if (!add_link(&data, 0, 2) || !add_link(&data, 0, 1) || !add_link(&data, 0, 3))
|
if (!add_link(&data, 0, 1) || !add_link(&data, 0, 2))
|
||||||
{
|
{
|
||||||
|
lst_inddel(&(data.adj[2]));
|
||||||
|
lst_inddel(&(data.adj[1]));
|
||||||
|
lst_inddel(&(data.adj[0]));
|
||||||
|
ft_memdel((void**)&(data.adj));
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
if (!add_link(&data, 1, 4))
|
||||||
|
{
|
||||||
|
lst_inddel(&(data.adj[2]));
|
||||||
|
lst_inddel(&(data.adj[1]));
|
||||||
|
lst_inddel(&(data.adj[0]));
|
||||||
|
ft_memdel((void**)&(data.adj));
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
if (!add_link(&data, 2, 3) || !add_link(&data, 2, 5))
|
||||||
|
{
|
||||||
|
lst_inddel(&(data.adj[4]));
|
||||||
|
lst_inddel(&(data.adj[3]));
|
||||||
|
lst_inddel(&(data.adj[2]));
|
||||||
|
lst_inddel(&(data.adj[1]));
|
||||||
|
lst_inddel(&(data.adj[0]));
|
||||||
|
ft_memdel((void**)&(data.adj));
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
if (!add_link(&data, 3, 6))
|
||||||
|
{
|
||||||
|
lst_inddel(&(data.adj[5]));
|
||||||
|
lst_inddel(&(data.adj[4]));
|
||||||
|
lst_inddel(&(data.adj[3]));
|
||||||
|
lst_inddel(&(data.adj[2]));
|
||||||
|
lst_inddel(&(data.adj[1]));
|
||||||
|
lst_inddel(&(data.adj[0]));
|
||||||
|
ft_memdel((void**)&(data.adj));
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
if (!add_link(&data, 4, 5))
|
||||||
|
{
|
||||||
|
lst_inddel(&(data.adj[6]));
|
||||||
|
lst_inddel(&(data.adj[5]));
|
||||||
|
lst_inddel(&(data.adj[4]));
|
||||||
|
lst_inddel(&(data.adj[3]));
|
||||||
|
lst_inddel(&(data.adj[2]));
|
||||||
|
lst_inddel(&(data.adj[1]));
|
||||||
|
lst_inddel(&(data.adj[0]));
|
||||||
|
ft_memdel((void**)&(data.adj));
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
if (!add_link(&data, 5, 6) || !add_link(&data, 5, 7))
|
||||||
|
{
|
||||||
|
lst_inddel(&(data.adj[6]));
|
||||||
|
lst_inddel(&(data.adj[5]));
|
||||||
|
lst_inddel(&(data.adj[4]));
|
||||||
|
lst_inddel(&(data.adj[3]));
|
||||||
|
lst_inddel(&(data.adj[2]));
|
||||||
|
lst_inddel(&(data.adj[1]));
|
||||||
|
lst_inddel(&(data.adj[0]));
|
||||||
|
ft_memdel((void**)&(data.adj));
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
if (!add_link(&data, 6, 7))
|
||||||
|
{
|
||||||
|
lst_inddel(&(data.adj[7]));
|
||||||
|
lst_inddel(&(data.adj[6]));
|
||||||
|
lst_inddel(&(data.adj[5]));
|
||||||
|
lst_inddel(&(data.adj[4]));
|
||||||
lst_inddel(&(data.adj[3]));
|
lst_inddel(&(data.adj[3]));
|
||||||
lst_inddel(&(data.adj[2]));
|
lst_inddel(&(data.adj[2]));
|
||||||
lst_inddel(&(data.adj[1]));
|
lst_inddel(&(data.adj[1]));
|
||||||
@ -38,69 +144,6 @@ int main(void)
|
|||||||
ft_memdel((void**)&(data.adj));
|
ft_memdel((void**)&(data.adj));
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
/* if (!add_link(&data, 1, 4)) */
|
|
||||||
/* { */
|
|
||||||
/* lst_inddel(&(data.adj[2])); */
|
|
||||||
/* lst_inddel(&(data.adj[1])); */
|
|
||||||
/* lst_inddel(&(data.adj[0])); */
|
|
||||||
/* ft_memdel((void**)&(data.adj)); */
|
|
||||||
/* return (1); */
|
|
||||||
/* } */
|
|
||||||
/* if (!add_link(&data, 2, 3) || !add_link(&data, 2, 5)) */
|
|
||||||
/* { */
|
|
||||||
/* lst_inddel(&(data.adj[3])); */
|
|
||||||
/* lst_inddel(&(data.adj[2])); */
|
|
||||||
/* lst_inddel(&(data.adj[1])); */
|
|
||||||
/* lst_inddel(&(data.adj[0])); */
|
|
||||||
/* ft_memdel((void**)&(data.adj)); */
|
|
||||||
/* return (1); */
|
|
||||||
/* } */
|
|
||||||
/* if (!add_link(&data, 3, 6)) */
|
|
||||||
/* { */
|
|
||||||
/* lst_inddel(&(data.adj[5])); */
|
|
||||||
/* lst_inddel(&(data.adj[3])); */
|
|
||||||
/* lst_inddel(&(data.adj[2])); */
|
|
||||||
/* lst_inddel(&(data.adj[1])); */
|
|
||||||
/* lst_inddel(&(data.adj[0])); */
|
|
||||||
/* ft_memdel((void**)&(data.adj)); */
|
|
||||||
/* return (1); */
|
|
||||||
/* } */
|
|
||||||
/* if (!add_link(&data, 4, 5)) */
|
|
||||||
/* { */
|
|
||||||
/* lst_inddel(&(data.adj[6])); */
|
|
||||||
/* lst_inddel(&(data.adj[5])); */
|
|
||||||
/* lst_inddel(&(data.adj[3])); */
|
|
||||||
/* lst_inddel(&(data.adj[2])); */
|
|
||||||
/* lst_inddel(&(data.adj[1])); */
|
|
||||||
/* lst_inddel(&(data.adj[0])); */
|
|
||||||
/* ft_memdel((void**)&(data.adj)); */
|
|
||||||
/* return (1); */
|
|
||||||
/* } */
|
|
||||||
/* if (!add_link(&data, 5, 6) || !add_link(&data, 5, 7)) */
|
|
||||||
/* { */
|
|
||||||
/* lst_inddel(&(data.adj[6])); */
|
|
||||||
/* lst_inddel(&(data.adj[5])); */
|
|
||||||
/* lst_inddel(&(data.adj[4])); */
|
|
||||||
/* lst_inddel(&(data.adj[3])); */
|
|
||||||
/* lst_inddel(&(data.adj[2])); */
|
|
||||||
/* lst_inddel(&(data.adj[1])); */
|
|
||||||
/* lst_inddel(&(data.adj[0])); */
|
|
||||||
/* ft_memdel((void**)&(data.adj)); */
|
|
||||||
/* return (1); */
|
|
||||||
/* } */
|
|
||||||
/* if (!add_link(&data, 6, 7)) */
|
|
||||||
/* { */
|
|
||||||
/* lst_inddel(&(data.adj[7])); */
|
|
||||||
/* lst_inddel(&(data.adj[6])); */
|
|
||||||
/* lst_inddel(&(data.adj[5])); */
|
|
||||||
/* lst_inddel(&(data.adj[4])); */
|
|
||||||
/* lst_inddel(&(data.adj[3])); */
|
|
||||||
/* lst_inddel(&(data.adj[2])); */
|
|
||||||
/* lst_inddel(&(data.adj[1])); */
|
|
||||||
/* lst_inddel(&(data.adj[0])); */
|
|
||||||
/* ft_memdel((void**)&(data.adj)); */
|
|
||||||
/* return (1); */
|
|
||||||
/* } */
|
|
||||||
ft_printf("===== list of adj =====\n");
|
ft_printf("===== list of adj =====\n");
|
||||||
i = 0;
|
i = 0;
|
||||||
while (i < NB_NODES)
|
while (i < NB_NODES)
|
||||||
@ -114,7 +157,7 @@ int main(void)
|
|||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
path = edmunds_karp(&data, 0, 1);
|
path = edmunds_karp(&data, 0, 7);
|
||||||
if (path != NULL)
|
if (path != NULL)
|
||||||
{
|
{
|
||||||
i = 0;
|
i = 0;
|
||||||
@ -131,10 +174,10 @@ int main(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
tablst_inddel(path);
|
tablst_inddel(path);
|
||||||
/* lst_inddel(&(data.adj[7])); */
|
lst_inddel(&(data.adj[7]));
|
||||||
/* lst_inddel(&(data.adj[6])); */
|
lst_inddel(&(data.adj[6]));
|
||||||
/* lst_inddel(&(data.adj[5])); */
|
lst_inddel(&(data.adj[5]));
|
||||||
/* lst_inddel(&(data.adj[4])); */
|
lst_inddel(&(data.adj[4]));
|
||||||
lst_inddel(&(data.adj[3]));
|
lst_inddel(&(data.adj[3]));
|
||||||
lst_inddel(&(data.adj[2]));
|
lst_inddel(&(data.adj[2]));
|
||||||
lst_inddel(&(data.adj[1]));
|
lst_inddel(&(data.adj[1]));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user