亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? search_plan.c

?? intel ipp4.1性能庫(kù)的一些例子。
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/********************************************************************* * File: search_plan.c * Description: contains the machinery necessary to search the graph * * Author: Joerg Hoffmann 1998 * *********************************************************************/ /********************************************************************* * (C) Copyright 1998 Albert Ludwigs University Freiburg *     Institute of Computer Science * * All rights reserved. Use of this software is permitted for  * non-commercial research purposes, and it may be copied only  * for that use.  All copies must include this copyright message. * This software is made available AS IS, and neither the authors * nor the  Albert Ludwigs University Freiburg make any warranty * about the software or its performance.  *********************************************************************//********************************************************************* * * NOTE: the commentaries in this file are all in German, cause these are *       notes that I made for my own use while working on the search *       code, which is really terribly complicated. *  *       If you have problems understanding the code (like I do when I have *       a look at it now), contact me at: *        *       hoffmann@informatik.uni-freiburg.de * *       and I'll be happy to answer your questions, if I can... * **********************************************************************/#include "ipp.h"#include "output.h"#include "utilities.h"#include "memory.h"#include "search_plan.h"#include "memoize.h"#include "wave_front.h"/************************************************** * SIMPLE HELPERS, SHOULD BE MACROS. OFTEN CALLED * **************************************************/void DO_OP( int time, OpNode *op ){  int was_used;  was_used = op->info_at[time-1]->is_used++;  if ( !was_used && gnum_ops_at[time-1] == ARRAY_SIZE ) {    printf( "\n\nipp: increase ARRAY_SIZE( preset value: %d )", ARRAY_SIZE );    exit( 1 );  }  if ( !was_used ) {    gops_at[time-1][gnum_ops_at[time-1]++] = op;    gnum_of_actions_tried++;    if ( op->is_noop ) {      gnum_of_noops_tried++;    }  }}void UNDO_OP( int time, OpNode *op ){  int was_used;  was_used = --op->info_at[time-1]->is_used;  if( !was_used ) {    gops_at[time-1][--gnum_ops_at[time-1]] = NULL;  }}void DO_FT( int time, FtNode *ft, OpNode *op ){  int was_used;  FtNode *neg_ft = ft->positive ? gft_table[NEG_ADR( ft->index )] :    gft_table[ft->index];      if ( !neg_ft || !neg_ft->info_at[time] ) {    return;  }  was_used = ft->info_at[time]->is_goal++;  if ( ( !was_used && gnum_goals_at[time] == ARRAY_SIZE ) ||       ft->info_at[time]->is_goal > ARRAY_SIZE ) {    printf( "\n\nipp: increase ARRAY_SIZE( preset value: %d )", ARRAY_SIZE );    exit( 1 );  }  (ft->info_at[time]->is_goal_for)[ft->info_at[time]->is_goal-1] = op;  if ( !was_used ) {    ggoals_at[time][gnum_goals_at[time]++] = ft;    if ( ft->positive ) {      gpos_goals_vector_at[time][ft->uid_block] |= ft->uid_mask;    } else {      gneg_goals_vector_at[time][ft->uid_block] |= ft->uid_mask;    }  }}void UNDO_FT( int time, FtNode *ft ){  int was_used;  FtNode *neg_ft = ft->positive ? gft_table[NEG_ADR( ft->index )] :    gft_table[ft->index];      if ( !neg_ft || !neg_ft->info_at[time] ) {    return;  }  was_used = --ft->info_at[time]->is_goal;  (ft->info_at[time]->is_goal_for)[ft->info_at[time]->is_goal] = NULL;  if ( !was_used ) {    ggoals_at[time][--gnum_goals_at[time]] = NULL;    if ( ft->positive ) {      gpos_goals_vector_at[time][ft->uid_block] &= ~(ft->uid_mask);    } else {      gneg_goals_vector_at[time][ft->uid_block] &= ~(ft->uid_mask);    }  }}FtNode *NEG_FT( FtNode *ft ){  return ( ft->positive ? gft_table[NEG_ADR( ft->index )] : gft_table[ft->index] );}/********************* * SETTING UP SEARCH * *********************/Bool search_plan( int max_time ){  int i;  Bool result;  Integers *j;  expand( max_time );  /* achtung!! hier muss noch irgendwie die reihenfolge der ziele   * in bezug auf definition im domain file beruecksichtigt werden   */  gnum_goals_at[max_time] = 0;  for ( j = gbit_goal_state->positive->indices; j; j = j->next ) {    DO_FT( max_time, gft_table[j->index], NULL );  }  for ( j = gbit_goal_state->negative->indices; j; j = j->next ) {    DO_FT( max_time, gft_table[NEG_ADR( j->index )], NULL );  }  gnum_ops_at[max_time-1] = 0;  gnum_goals_at[max_time-1] = 0;  result = search( max_time, gnum_goals_at[max_time] - 1);  for ( i=gnum_goals_at[max_time] - 1; i>-1; i-- ) {    UNDO_FT( max_time, ggoals_at[max_time][i] );  }  if ( !result ) memoize( max_time );                          return result;}/******************************** * THE TWO MAIN SEARCH FUNCIONS *         ********************************/Bool search( int time, int curr_index ){  EfEdge *ef_i;  EfNode *ef;  FtNode *ft;  if ( time == 0 ) return TRUE;  if ( curr_index < 0 ) {    if ( !action_set_is_minimal( time ) ) {      return FALSE;    }    return complete_goals_and_search( time );  }  while ( ( ft = ggoals_at[time][curr_index] )->info_at[time]->is_true ) {    curr_index--;    if ( curr_index < 0 ) {      return search( time, -1 );    }  }  if ( ft->noop ) {    if ( try_noop( time, ft, curr_index ) ) {      if ( search( time, curr_index - 1 ) ) {	return TRUE;      }           untry_noop( time, ft );    }  }  for ( ef_i = ft->info_at[time]->adders_pointer; ef_i; ef_i = ef_i->next ) {     ef = ef_i->ef;    if ( !try_ef( time, ef, curr_index ) ) {      continue;    }    if ( search( time, curr_index - 1 ) ) {      return TRUE;    }        untry_ef( time, ef );  }  return FALSE;}Bool complete_goals_and_search( int time ){  int i, j;  OpNode *op;  EfNode *i_ef;  FtEdge *i_ft;  FtNode *ft;  for ( i = 0; i < gnum_ops_at[time-1]; i++ ) {    op = gops_at[time-1][i];    for ( i_ef = op->conditionals; i_ef; i_ef = i_ef->next ) {      /* ALLE effekte, also auch dummys, werden auf schaedlichkeit       * geprueft!!!       */      if ( i_ef->first_occurence > time-1 ) {	/* erst soweit runterspulen, bis wir auf dem richtigen level sind...	 * (zeiger op->conditionals zeigt auf letzten hinzugekommenen	 * effekt...)	 *	 * ACHTUNG: INEFFIZIENT. koennte mit einfachen mitteln direkt	 * drauf zugegriffen werden (op_level_info den korrekten anfang	 * mitspeichern oder so...)	 */	continue;      }      if ( cant_do_conditions( time, i_ef ) ) {	/* effekt hat onehin bedingungen, die nicht mit neuen zielen	 * wahr sein koennen; also gar nicht erst auf schaedlichkeit	 * pruefen.	 *	 * beachte: in exclusivitaet ist widerspruechlichkeit bereits	 * enthalten, also werden hier bereits gewaehlte verhinderungs	 * goals erkannt.	 *	 * ACHTUNG DUMMYS: dummy knoten haben zwar keine explizite exclusivitaet,	 *                 solange sie noch nicht integriert sind,	 *                 (PRINZIPIELL IST AUCH EIGENE BERECHNUNG DENKBAR), aber	 *                 auf widerspruechlichkeit, also insbesondere effekt	 *                 verhinderung wird hier reagiert, da auch dummy	 *                 knoten automatisch exclusiv zu ihrer negation sind.	 */	continue;      }      for ( i_ft = i_ef->effects; i_ft; i_ft = i_ft->next ) {	if ( (ft = NEG_FT( i_ft->ft )) == NULL ||	     !ft->info_at[time] ) {	  /* widersprechendes fact kann kein ziel sein, da (noch)	   * nicht vorhanden auf step time	   */	  continue;	}        if ( !ft->info_at[time]->is_goal && 	     !( ft->info_at[time-1] && ft->info_at[time-1]->is_goal ) ) {	  /* widersprechendes fact kein ziel und 	   * auf neuem step nicht da oder auch kein ziel	   */	  continue;	}	if ( !ft->info_at[time]->is_goal ) {	  /* ist neues ziel: nur einschreiten, falls nicht ausschliesslich	   * ziel fuer op selbst	   */	  for ( j=0; j<ft->info_at[time-1]->is_goal; j++ ) {	    if ( (ft->info_at[time-1]->is_goal_for)[j] != op ) break;	  }	  if ( j == ft->info_at[time-1]->is_goal ) {	    /* fact ist nur widerspruch zu op's eigenen effekten	     */	    continue;	  }	}	/* wir muessen diesen effekt verhindern!!	 *	 * aus uebersichtlichkeitsgruenden sprung in die	 * effekt schleife.	 */	break;      }      if ( !i_ft ) {	/* haben kein schaedliches fact in diesem effekt	 * gefunden! --> naechsten effekt pruefen.	 */	continue;      }      /* der reihe nach versuchen, die bedingungen zu        * verhindern       */      for ( i_ft = i_ef->conditions; i_ft; i_ft = i_ft->next ) {		if ( i_ft->ft->info_at[time-1]->is_goal ) {	  /* conditions sind auf time-1 garantiert da...	   * ACHTUNG!!! wenns spaeter dummys gibt	   *            > kein problem:(?) werden als knoten eingetragen.	   *	   * neue ziele koennen nicht verhindert werden.	   */	  continue;	}		if ( (ft = NEG_FT( i_ft->ft )) == NULL ||	     !ft->info_at[time-1] ) {	  /* widerspruchs fact, also verhinderung, (noch) nicht da	   */	  continue;	}	if ( cant_do_ft( time-1, ft ) ||	     is_deleted( time-1, ft, op ) ) {	  /* widerspruchsbedingung ist exklusiv zu ausgewaehlten	   * zielen oder	   * wird von ausgewaehltem op' != op zerstoert...	   *	   * hier auch moeglich: effekte als used markieren und	   * bei zerstoerung beruecksichtigen!!	   *	   * ebenfalls moeglich: getriggerte effekte beruecksichtigen,	   * solche werden aber spaeter im fixpunkt auch noch erkannt.	   * effizienzfrage...??	   */	  continue;	}	/* HOPPLA: effekt bedingung koennte dummy gewesen sein.	 *         wenn das aber der fall ist, dann ist die negation	 *         WEGEN CWA schon da, also KEIN DUMMY. deshalb	 *         werden hier wie gewuenscht nur nicht-dummys	 *         als ziele eingesetzt!!	 *	 *       OHNE CWA NICHT KORREKT!!!!	 */	DO_FT( time-1, ft, op );  	if ( complete_goals_and_search( time ) ) {	  return TRUE;	}	UNDO_FT( time-1, ft );      }      /* schaedlicher effekt kann hier nicht verhindert werden!       */      return FALSE;    }  }  /* an dieser stelle sind alle ausgewaehlten ops auf nicht -   * schaedlichkeit geprueft.   *   * suche fortsetzen.   */  /* hier nochmal minimalitaets check !! ??   */  if ( !action_set_is_minimal( time ) ) {    return FALSE;  }  if ( memoized( time - 1 ) ) {    return FALSE;  }  if ( time > 1 ) {    gnum_ops_at[time-2] = 0;    gnum_goals_at[time-2] = 0;  }	  if ( search( time - 1, gnum_goals_at[time-1] - 1 ) ) {    return TRUE;  }  memoize( time - 1 );  if ( gsame_as_prev_flag && time == gfirst_full_time + 1 ) {    add_candidate( time - 1 );  }  return FALSE;      }/******************************** * SOPHISTICATED SEARCH HELPERS * ********************************/Bool action_set_is_minimal( int time ){  int i;  Bool result = TRUE;  EfNode *i_ef;  FtEdge *i_ft;  FtNode *neg_ft = NULL;  /* zunaechst werden alle getriggerten effekte eingetragen.   *   * wie ueblich: INEFFIZIENT! besser waere es, explizit ausgewaehlte   * effekte zu markieren, dann braucht man die nicht mehr anzuschauen.   */  for ( i = 0; i < gnum_ops_at[time-1]; i++ ) {    for ( i_ef = gops_at[time-1][i]->conditionals; i_ef; i_ef = i_ef->next ) {      if ( i_ef->first_occurence > time-1 ) {	/* INEFFIZIENT: wie im complete - goals pattern waere es besser,	 * direkt vom op auf die hier vorhandenen effekte zugreifen zu 	 * koennen.	 */	continue;      }      for ( i_ft = i_ef->conditions; i_ft; i_ft = i_ft->next ) {	neg_ft = i_ft->ft->positive ? gft_table[NEG_ADR( i_ft->ft->index )] :	  gft_table[i_ft->ft->index];	if ( neg_ft &&	     neg_ft->info_at[time-1] &&	     !i_ft->ft->info_at[time-1]->is_goal ) {	  break;	}      }      if ( !i_ft ) {	for ( i_ft = i_ef->effects; i_ft; i_ft = i_ft->next ) {	  i_ft->ft->info_at[time]->is_true++;	}      }    }  }  /* wenn es einen op gibt, der kein einziges fact alleine addet, dann

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美精品一区| 国产精品视频一二三区| 国产aⅴ精品一区二区三区色成熟| 国产精品蜜臀av| 91精品国产欧美一区二区| 国产精品123| 丝袜美腿亚洲一区| 自拍视频在线观看一区二区| 日韩一区二区三区精品视频| 成人久久视频在线观看| 免播放器亚洲一区| 亚洲国产aⅴ天堂久久| 国产精品久久久久久福利一牛影视| 欧美一区二区免费视频| 色噜噜狠狠一区二区三区果冻| 九九久久精品视频| 视频一区中文字幕| 一区二区免费在线播放| 国产欧美精品一区二区色综合| 欧美一区二区三区电影| 欧美在线影院一区二区| 成人精品鲁一区一区二区| 另类小说综合欧美亚洲| 午夜激情综合网| 亚洲国产婷婷综合在线精品| 日韩伦理av电影| 亚洲国产精品黑人久久久| 日韩精品一区二区在线| 91.成人天堂一区| 欧美三级中文字幕在线观看| 99久久精品国产精品久久| 丁香天五香天堂综合| 国产在线播放一区二区三区| 久久国产人妖系列| 麻豆国产精品一区二区三区| 视频精品一区二区| 日欧美一区二区| 性久久久久久久久久久久| 一区二区欧美在线观看| 亚洲自拍偷拍综合| 亚洲成人一区二区在线观看| 一区二区三区日韩精品| 一区二区三国产精华液| 亚洲国产精品一区二区久久 | 黄一区二区三区| 捆绑变态av一区二区三区| 日韩精品高清不卡| 久久国产精品色婷婷| 久久国产成人午夜av影院| 激情综合色播五月| 国产精品一二三四| 成人午夜在线免费| 成人av影院在线| 91蜜桃免费观看视频| 91性感美女视频| 在线视频你懂得一区二区三区| 日本丶国产丶欧美色综合| 欧美网站大全在线观看| 欧美久久久久久蜜桃| 欧美乱熟臀69xxxxxx| 日韩一级高清毛片| 精品国产伦理网| 亚洲国产精品激情在线观看| 国产精品女上位| 亚洲综合成人网| 另类调教123区| 国产精品538一区二区在线| 波多野结衣中文字幕一区| 91久久精品一区二区| 欧美一区二区三区四区在线观看| 欧美变态凌虐bdsm| 国产精品成人一区二区三区夜夜夜| 亚洲欧美自拍偷拍色图| 亚洲午夜久久久久| 狠狠色2019综合网| av成人免费在线观看| 欧美日韩国产高清一区二区三区| 精品99久久久久久| 一区二区三区小说| 日本伊人色综合网| 成人激情综合网站| 欧美日韩国产另类不卡| 久久久www免费人成精品| 亚洲女厕所小便bbb| 麻豆免费精品视频| 94色蜜桃网一区二区三区| 欧美精品久久久久久久多人混战 | 亚洲成a人在线观看| 免费高清在线一区| 99国产欧美久久久精品| 91精品国产综合久久久久久久| 久久久久久久久久久电影| 亚洲另类色综合网站| 国产永久精品大片wwwapp| 欧美性生活一区| 中文字幕不卡三区| 老司机免费视频一区二区三区| 91美女在线观看| 国产午夜亚洲精品理论片色戒| 亚洲福中文字幕伊人影院| 国产·精品毛片| 日韩午夜在线影院| 亚洲午夜激情av| av中文字幕在线不卡| 欧美精品一区男女天堂| 亚欧色一区w666天堂| 99r精品视频| 国产午夜精品福利| 久久99蜜桃精品| 欧美制服丝袜第一页| 中文字幕一区日韩精品欧美| 久久99久久精品| 91精品国产综合久久精品麻豆| 亚洲色图在线看| 不卡视频在线观看| 久久婷婷国产综合国色天香 | 琪琪久久久久日韩精品| 欧美亚洲一区二区三区四区| 国产精品乱子久久久久| 国产剧情av麻豆香蕉精品| 91精品国产乱码久久蜜臀| 一区二区三区毛片| 99久久99久久综合| 国产精品久久毛片| 成人av第一页| 欧美激情自拍偷拍| 国产成人av影院| 久久久精品tv| 国产成人av自拍| 欧美激情一区二区三区蜜桃视频 | 97aⅴ精品视频一二三区| 国产精品免费人成网站| 国产成+人+日韩+欧美+亚洲| 久久综合色天天久久综合图片| 免费看欧美美女黄的网站| 制服丝袜日韩国产| 日韩高清不卡一区二区| 欧美日韩在线直播| 五月天婷婷综合| 在线成人免费视频| 奇米色777欧美一区二区| 日韩小视频在线观看专区| 免费黄网站欧美| 精品国产伦一区二区三区免费 | 久久久久久久网| 福利电影一区二区三区| 国产欧美日韩中文久久| 成人永久免费视频| 亚洲精品欧美在线| 欧美理论电影在线| 免费在线视频一区| 久久久国产精华| jiyouzz国产精品久久| 亚洲美女免费在线| 91精品国产麻豆国产自产在线| 久久国产精品无码网站| 欧美激情一区在线| 91国模大尺度私拍在线视频| 亚洲国产sm捆绑调教视频| 日韩精品中文字幕在线一区| 国产精品18久久久久久久久久久久| 中文字幕国产一区| 日本高清视频一区二区| 免费高清在线一区| 国产精品久久一卡二卡| 在线欧美日韩精品| 日日欢夜夜爽一区| 国产拍揄自揄精品视频麻豆| av电影天堂一区二区在线观看| 一区二区三区产品免费精品久久75| 欧美精品第一页| 福利一区在线观看| 亚洲第一福利一区| 国产欧美一区二区在线| 91极品视觉盛宴| 国产麻豆一精品一av一免费| 国产精品卡一卡二| 欧美一区二区三区四区久久| 国产成人精品一区二区三区四区| 一区二区三区在线观看国产| 日韩欧美国产高清| 91丨九色丨蝌蚪丨老版| 蜜桃久久精品一区二区| 国产精品高潮呻吟久久| 欧美肥妇free| 成人国产在线观看| 免费高清不卡av| 亚洲精品久久嫩草网站秘色| 日韩视频一区二区| 色综合久久综合网| 国产高清久久久久| 午夜免费欧美电影| 国产精品国产a级| 精品国产乱码久久久久久蜜臀| 色综合久久综合网97色综合| 国产在线精品视频| 日韩福利视频导航| 亚洲一区二区三区四区在线 | a在线播放不卡| 精品亚洲成a人|