Heurestyka manhatan
Ostatnio zmodyfikowano 2015-05-06 22:20
aaadam Temat założony przez niniejszego użytkownika |
Heurestyka manhatan » 2015-05-06 20:22:58 witam próbuję napisać algorytm a* niestety coś zawodzi przy wyznaczaniu H = szacunkowego kosztu ruchu przejścia z aktualnej pozycji do celu wędrówki. Proszę o pomoc,oczywiście sam program nie jest jeszcze skończony. Lepiej to widać po uruchomieniu programu: #include "stdafx.h" #include <iostream> #include <list> #include <cstdlib> using namespace std; int const size = 10; char map[ size ][ size ];
struct node { node( int xx, int yy ) { x = xx; y = yy; h = 0; } node() { h = 0; }; int x, y, h; char state; } start( 0, 0 ), destination( 4, 4 ); node Node[ size ][ size ];
void print() { for( int i = 0; i < size; i++ ) { for( int j = 0; j < size; j++ ) { cout << Node[ i ][ j ].h << " "; } cout << endl; } }
void make_heuristics() { for( int i = 0; i < size; i++ ) { for( int j = 0; j < size; j++ ) { int x = 0; Node[ i ][ j ].h = destination.x - Node[ i ][ j ].x; if( Node[ i ][ j ].h < 0 ) Node[ i ][ j ].h =- Node[ i ][ j ].h; Node[ i ][ j ].h += destination.y - Node[ i ][ j ].y; if( Node[ i ][ j ].h < 0 ) Node[ i ][ j ].h =- Node[ i ][ j ].h; } } }
void reset() { for( int i = 0; i < size; i++ ) for( int j = 0; j < size; j++ ) { Node[ i ][ j ].state = '0'; Node[ i ][ j ].x = j; Node[ i ][ j ].y = i; Node[ i ][ j ].h = 0; } for( int j = 2; j < 7; j++ ) Node[ j ][ 5 ].state = 'x'; Node[ destination.x ][ destination.y ].state = 257; make_heuristics(); }
int _tmain( int argc, _TCHAR * argv[] ) { bool int_exit = 1; reset(); while( int_exit != 0 ) { system( "CLS" ); print(); cout << "Podaj punkt startu" << endl; cout << "x =" << endl; cin >> start.x; cout << "y =" << endl; } system( "PAUSE" ); return 0; }
|
|
aaadam Temat założony przez niniejszego użytkownika |
» 2015-05-06 22:20:50 problem rozwiązany czasami trywialne sprawy zajmują tyle czasu ;/ |
|
« 1 » |