 Today, we are going to discuss the topic issues in the design of search programs. As we know, search programs are strategies that lead us from the start to our particular goal. And these control strategies have certain algorithms attached to it, which are step by step procedures. Using uninformed search or a heuristic search or an optimized search or any search which is supported by an artificial intelligent environment, we move from the start state to the goal state through many intermediate states, which have to be expanded to reach finally our particular goal. At the end of this session, you as a student will be able to demonstrate the issues arising in the design of a search program. We see that every search program is represented with a solution to be got from a state space which we have defined our problem into. So the components in the search process will involve that the search process has to be viewed as a traversal of a tree. We consider it to be a tree because we start somewhere which might be the initial node of the tree and then we go into the sub-trees till we find the leaf which is our particular goal. The node represents a problem state since we are using a state space search and the arcs represent the relationship between these state arcs which correspond to operations taking us from one state to the other. How efficient your search process is depends on how efficiently you are going to traverse your particular tree to find a solution or to go into a blind LA or end up in a combinatorial explosion. So the first component we see is a tree and it's traversal. So here we have nodes which represent the nodes of our particular tree and we are traversing because our arcs are operations which allow us to go from one node to the other depending on a particular operation that is carried out on the particular node. Then in the search process we try to generate an output which might be a path or paths throughout the tree or we connect the initial state with one or more final states. In this search process we might want to keep the status of our particular nodes by using an appropriate data structure like a stack and all these combinations of the various data structures and the output generated from us will generate a path or finally indicate a state that we are interested in as our output. Now I give you some time to reflect on since we know the components and we know the expected outputs of our search how do we now proceed searching. As we all know and we have studied in discrete mathematical structures the characteristics of a particular tree is that a tree is constructed from rules that define allowable moves in the problem space and we considered implicit and explicit search trees to get our particular solutions finally. We consider only parts of the whole tree because we know that the solution exists in that particular part and the whole knowledge of all the nodes of the tree may not be of importance to us. Looking at this characteristics of the tree implemented here may be only the left tree having Sunita in it will be of importance to us because our goal may be finding out who Tina is whereas we could neglect the middle and the right side. Therefore the characteristics of a tree which we have seen before is of great importance. Finally the issues of the searching techniques involve in what direction should this search be done. So we have two alternatives here a start state to a goal state or a backward direction from the goal state to the start state. Now this will depend upon what the designer actually wants to detect and whether his goal state is closer whether his state of importance is closer to the goal state or closer to the start state. So such sort of decisions have to be taken anyway we have to go in a forward or a backward direction. The second criteria for being an issue is the selection of the applicable rules which rules are matching our particular goal. So look for the rules to apply match these rules against the states which are available in our search tree. And third is the method to represent each node for each search process that is how much knowledge is required how you are going to represent the knowledge and the frame problem which gives you a template how your problem has to be solved. It is difficult to represent all these facts for complex problems. So these issues can be given with the help of this example wherein we whether we are going in forward direction or whether we are going in reverse direction whether all the sub trees have to be considered whether we are going in the right direction and determining the particular output. So all these have to be considered. Now instead of restricting ourselves to trees many a times after visiting a particular node we find out that we could have gone for another sub tree or we could have gone to the original node once again and then take a path which is parallel to the path which we have taken. So therefore we would prefer here to use search graphs in place of search trees where we generate nodes in a search tree we expand each generated successor and we continue until the solution is formed for a tree. Now often these results is the same node therefore it is generated as part of several paths hence cycles are seen here and now we cannot use a tree because cycles are not allowed in tree. So the node is processed more than once here and this happens because a search space is a directed graph rather than a tree. So any tree search procedure keeping track of all the node generated so far can be converted to a graph procedure by modifying actions performed each time the node is generated. We also have to check for duplicate nodes by examining the nodes created check if the node already exists if not add to the graph and if it exists set the node that is expanded to a point of the existing node corresponding to the successor rather than to a new node. For each path of each node check to see if each path is better or worse than the old one here make a decision but take care of cycles why the graph is preferred to a tree for the search process because it reduces the effort of exploring essentially more paths several times and a graph search procedures are used for dealing with partially communicate production problems where the set of operations produce same results irrespective of the order of operations. So we are permitting cycles we want a node that is already visited and that is why a graph is preferred to a tree for a search process and we have found in artificial intelligence that results have been generated as per our requirement and with the accuracy using search graphs for our reference we have used thank you