Exemple #1
0
void traverseBFT(int g[GRAPHSIZE][GRAPHSIZE]){
    int startingNode;
    printf("\n\tBreadth First Traversal:\n\tStarting Node: ");
    scanf("%d",&startingNode);

    VisitMark mark[GRAPHSIZE]; // to know which nodes to add
    List *Q = initQueue();
    int i,j;

    for (i = 0; i < GRAPHSIZE; i++){
            mark[i] = UNVISITED; // For starters, mark all nodes as UNVISITED
    }

    mark[startingNode] = VISITED;

    NQ(&Q,startingNode);

    while (!isEmpty(&Q)){
        int temp = DQ(&Q);
        printf("%d ",temp);
        for (j = 0; j < GRAPHSIZE; j++){
                if (g[j][temp] == 1){
                    if (mark[j] == UNVISITED){
                        mark[j] = VISITED;
                        NQ(&Q,j);
                    }
                }
        }
    }
}
Exemple #2
0
void BFS(int i)
{
	printf("%d ", i);
	reach[i] = 1;
	myQueue *root = NULL;
	root = NQ(root,i);
	node *p = graph[root->value];

	while (root != NULL)
	{
		p = graph[root->value];
		root = DQ(root);

		while (p != NULL)
		{

			if (reach[p->vertex] == 0)
			{
				printf("%d ", p->vertex);
				reach[p->vertex] = 1;
				root = NQ(root,p->vertex);
			}
			p = p->next;
		}
	}

}
void AA(void*u,Uint8*_,B L){u=u;while(L>0){B M=p&037777,s=p>>12,u=(s%R)[
l],J=(s%U)[b],w=0,a=0,n;A v,q,m,E=(0x2000-(p&017777))/8192e0f;v=q=0;
#define EF_(x) F[w][1638##x+M
#define EF(l,s,ms) ((s*ms+EF_(4)-l]*(1-ms))/2.f+EF_(3)]/2.f)
#define FQ(s) (A)sin((0.12*pow(2,n/12.))*p*s)
#define IZ(v,c) v*=v c?v:0;
#define BF F[w][M]=F[w][M+16384]=q;v+=q;++w
#define IP(n,x,y,z,c) if(n!=46){x}q=EF(y,q,z);c;BF;
#define IS(s,c) if(q c s 0.75f)q=s 0.75f;
#define NQ(x,a,m) n=x-(x>=97?121:65)+a;q=FQ(m);
IP(u,NQ(u,12,1)m=FQ(1.01f);IZ(q,>6e-1)IZ(m,>6e-1)q+=m;q*=5e-1f*(E+1);,12288,
0.2f,;)for(;a<3;++a){char sn=(s%D)[a[r]];q=0;IP(sn,NQ(sn,12,0.25f)IZ(q,<0.3),
Exemple #4
0
void traversePrim(int g[GRAPHSIZE][GRAPHSIZE]){
    int startingNode;
    printf("\n\tBreadth First Traversal:\n\tStarting Node: ");
    scanf("%d",&startingNode);

    int i,j;
    List *Queue = initQueue();
    VisitMark mark[GRAPHSIZE];
    for (i = 0; i < GRAPHSIZE; i++){
        mark[i] = UNVISITED;
    }

    int localMin;
    int closestNode;

    NQ(&Queue,startingNode);
    mark[startingNode] = VISITED;

    while (!isEmpty(&Queue)){
        int temp = DQ(&Queue);
        printf("%d ",temp);
        localMin = 9999;
        closestNode = temp;

        for (j = 0; j < GRAPHSIZE; j++){
            if (g[j][temp] > 0 && mark[j] == UNVISITED){
                if (g[j][temp] < localMin){
                    localMin = g[j][temp];
                    closestNode = j;
                }
            }
        }
        if (closestNode != temp){
            mark[closestNode] = VISITED;
            NQ(&Queue,closestNode);
        }

    }
}
Exemple #5
0
    void NQ(vector<int>& state, int row){
      int n = state.size();
      if(row == n){
	vector<string> res(n, string(n, '.'));
	for(int i = 0; i < n; i++){
	  res[i][state[i]] = 'Q';
	}
	allRes.push_back(res);
	return;
      }
      for(int col = 0; col < n; col++){
	if(isValid(state, row, col)){
	  state[row] = col;
	  NQ(state, row + 1);
	}
      }
    }
Exemple #6
0
void physics::energy()
{
    const double aa=0,bb=a;
    FILE *F1,*F2;

    //typedef double (phizics::*pointer)(double);
    F1 = fopen ("F1.txt","w+b");
    F2 = fopen ("F2.txt","w+b");

    rez = (double*) malloc(n*sizeof(double));
    E_for_table=new double[n];
    int i;
    nq=NQ();

    double sum_lambda=0;

    for (i=0;i<n;i++)
    {
        rez[i] = pow( ( (2.0*pow(a,3)/3.0) - (h/pow(2*m*q*E,0.5))*simpson1 (aa,bb) ),-1)*(2*pow(alpha,3)*h*h/(7*m*q*E))*pow(simpson2(aa,bb),2);
        fprintf(F2 ,"%5.51f\t %2.2f\n", rez[i],E);

        fprintf(F1 ,"%5.51f\t %2.2f\n", 1/lambda(E),E);
        //rez[i]+=e*field*fabs(1/lambda(E))*cos(360/teta*2*M_PI)-hw; //cos(teta)=1

        //rez[i]=cos(teta*2*M_PI/360);
        //fprintf(F1 ,"%2.2f\t %2.2f\n", rez[i],E);
        sum_lambda=lambda(E);
        E+=0.01;
        E_for_table[i]=E;

    }

        fclose(F1);
        fclose(F2);  //free (rez);
        E=0.1;

}
Exemple #7
0
int main()
	{
	
		struct Queue *Q = inializeQ();
		NQ(Q,1);
		NQ(Q,2);
		NQ(Q,3);
		NQ(Q,4);
		NQ(Q,5);
		NQ(Q,6);
		printQ(Q);
		printf("\n[\t");
		while(!isEmpty(Q))
		{
			int data = DQ(&Q);
			printf("%d\t", data);
			
		} 
		printf("]\t\n");
			
	return 0;
	}
Exemple #8
0
 vector<vector<string> > solveNQueens(int n) {
   vector<int> state(n, -1);
   NQ(state, 0);
   return allRes;
 }
Exemple #9
0
/*
 * Prim's approximated TSP tour
 * See also [Cristophides'92]
 */
static
int findEulerianPath(TSP *tsp) {
    int *mst, *arc;
    int i, j, k, l, a;
    int n, *iorder, *jorder;
    DTYPE d;
    DTYPE maxd;
    DTYPE *dist;
    DTYPE *dis;

    jorder = tsp->jorder;
    iorder = tsp->iorder;
    dist   = tsp->dist;
    maxd   = tsp->maxd;
    n      = tsp->n;

    if (!(mst =(int*) palloc((size_t) n * sizeof(int))) ||
        !(arc =(int*) palloc((size_t) n * sizeof(int))) ||
        !(dis =(DTYPE*) palloc((size_t) n * sizeof(DTYPE))) ) {
        elog(ERROR, "Failed to allocate memory!");
        return -1;
    }
    // PGR_DBG("findEulerianPath: 1");

    k = -1;
    j = -1;
    d = maxd;
    dis[0] = -1;
    for (i = 1; i < n; i++) {
        dis[i] = D(i, 0);
        arc[i] = 0;
        if (d > dis[i]) {
            d = dis[i];
            j = i;
        }
    }
    // PGR_DBG("findEulerianPath: j=%d", j);

    if (j == -1)
        elog(ERROR, "Error TSP fail to findEulerianPath, check your distance matrix is valid.");

    /*
     * O(n^2) Minimum Spanning Trees by Prim and Jarnick
     * for graphs with adjacency matrix.
     */
    for (a = 0; a < n - 1; a++) {
        mst[a] = j * n + arc[j]; /* join fragment j with MST */
        dis[j] = -1;
        d = maxd;
        for (i = 0; i < n; i++) {
            if (dis[i] >= 0) {
                /* not connected yet */
                if (dis[i] > D(i, j)) {
                    dis[i] = D(i, j);
                    arc[i] = j;
                }
                if (d > dis[i]) {
                    d = dis[i];
                    k = i;
                }
            }
        }
        j = k;
    }
    // PGR_DBG("findEulerianPath: 3");

    /*
     * Preorder Tour of MST
     */
#define VISITED(x) jorder[x]
#define NQ(x) arc[l++] = x
#define DQ()  arc[--l]
#define EMPTY (l == 0)

    for (i = 0; i < n; i++) VISITED(i) = 0;
    k = 0; l = 0; d = 0; NQ(0);
    while (!EMPTY) {
        i = DQ();
        if (!VISITED(i)) {
            iorder[k++] = i;
            VISITED(i)  = 1;
            for (j = 0; j < n - 1; j++) /* push all kids of i */ {
                if (i == mst[j]%n) NQ(mst[j]/n);
            }
        }
    }
    // PGR_DBG("findEulerianPath: 4");

    return 0;
}
Exemple #10
0
/*
 * Prim's approximated TSP tour
 * See also [Cristophides'92]
 */
bool
TSP::findEulerianPath() {
    Ids iorder(n);
    Ids mst(n);
    Ids arc(n);
    std::vector < double > dis(n);
    double d;
#if 0
    int n, *iorder, *jorder;
    DTYPE d;
    DTYPE maxd;
    DTYPE *dist;
    DTYPE *dis;

    jorder = tsp->jorder;
    iorder = tsp->iorder;
    dist   = tsp->dist;
    maxd   = tsp->maxd;
    n      = tsp->n;

    if (!(mst = (int*) palloc(n * sizeof(int))) ||
            !(arc = (int*) palloc(n * sizeof(int))) ||
            !(dis = (DTYPE*) palloc(n * sizeof(DTYPE))) )
    {
        elog(ERROR, "Failed to allocate memory!");
        return -1;
    }
#endif
    // PGR_DBG("findEulerianPath: 1");

    size_t j(0);
    double curr_maxd = maxd;
    dis[0] = -1;

    for (size_t i = 1; i < n; ++i) {
        dis[i] = dist[i][0];
        arc[i] = 0;
        if (curr_maxd > dis[i]) {
            curr_maxd = dis[i];
            j = i;
        }
    }
    //PGR_DBG("findEulerianPath: j=%d", j);

    if (curr_maxd == maxd) {
        // PGR_DBG("Error TSP fail to findEulerianPath, check your distance matrix is valid.");
        return false;
    }

    /*
     * O(n^2) Minimum Spanning Trees by Prim and Jarnick 
     * for graphs with adjacency matrix. 
     */
    for (size_t a = 0; a < n - 1; a++) {
        size_t k(0);
        mst[a] = j * n + arc[j]; /* join fragment j with MST */
        dis[j] = -1; 
        d = maxd;
        for (size_t i = 0; i < n; i++)
        {
            if (dis[i] >= 0) /* not connected yet */
            {
                if (dis[i] > dist[i][j])
                {
                    dis[i] = dist[i][j];
                    arc[i] = j;
                }
                if (d > dis[i])
                {
                    d = dis[i];
                    k = i;
                }
            }
        }
        j = k;
    }
    //PGR_DBG("findEulerianPath: 3");

    /*
     * Preorder Tour of MST
     */
#if 0
#define VISITED(x) jorder[x]
#define NQ(x) arc[l++] = x
#define DQ()  arc[--l]
#define EMPTY (l==0)
#endif
    for (auto &val : jorder) {
        val = 0;
    }

#if 0
    for (i = 0; i < n; i++) VISITED(i) = 0;
#endif

    size_t l = 0;
    size_t k = 0;
    d = 0;
    arc[l++] = 0;
    while (!(l == 0)) {
        size_t i = arc[--l];

        if (!jorder[i]) {
            iorder[k++] = i;
            jorder[i]  = 1;            
            /* push all kids of i */
            for (size_t j = 0; j < n - 1; j++) {
                if (i == mst[j] % n)
                    arc[l++] = mst[j] % n; 
            }
        }
    }

#if 0
    k = 0; l = 0; d = 0; NQ(0);
    while (!EMPTY)
    {
        i = DQ();
        if (!VISITED(i))
        {
            iorder[k++] = i;
            VISITED(i)  = 1;            
            for (j = 0; j < n - 1; j++) /* push all kids of i */
            {
                if (i == mst[j]%n) NQ(mst[j]/n); 
            }    
        }
    }
#endif
    //PGR_DBG("findEulerianPath: 4");

    update(iorder);
    return true;
}