Week 8&9&10 Search & CSP & Game

ไป€ไนˆๆ˜ฏๆœ็ดข๏ผŸ

ๆœ็ดขไธๆ˜ฏๅ…ณไบŽ้ข„ๆต‹๏ผŒ่€Œๆ˜ฏๅ…ณไบŽ้€‰ๆ‹ฉๅ’Œๅ†ณ็ญ–๏ผŒๆฏ”ๅฆ‚่ง„ๅˆ’ๅ’Œๅˆ†้…ใ€‚

ๆœ็ดขๆŠ€ๆœฏๆ˜ฏ้€š็”จ็š„้—ฎ้ข˜่งฃๅ†ณๆ–นๆณ•ใ€‚

่ทฏๅพ„่ง„ๅˆ’๏ผˆGoogle ๅœฐๅ›พ๏ผ‰๏ผŒๅœจๆธธๆˆไธญ่ฟ›่กŒไธ‹ไธ€ๆญฅ็งปๅŠจ๏ผˆAlphaGo๏ผ‰๏ผŒไปฅๅŠไปปๅŠกๅˆ†้…๏ผˆUber ๅ‡บ็งŸ่ฝฆ๏ผ‰ใ€‚

ๆœ็ดขๆ˜ฏไปŽ่ตทๅง‹็Šถๆ€ๅฏผ่ˆชๅˆฐ็›ฎๆ ‡็Šถๆ€็š„่ฟ‡็จ‹ใ€‚

ๆœ็ดข้—ฎ้ข˜็”ฑไปฅไธ‹ๅ†…ๅฎน็ป„ๆˆ๏ผš

  • State Space: ๅ–ๅ€ผ็ฉบ้—ด๏ผŒๆ‰€ๆœ‰ๅ–ๅ€ผ็š„ๅฏ่ƒฝ

  • Start State: agentๅผ€ๅง‹ๆœ็ดข็š„ๅœฐๆ–น

  • Goal State: agentๅฏปๆ‰พ็š„desired state

  • Goal test: ๆฃ€้ชŒๆ˜ฏๅฆๅˆฐ่พพgoal

  • successor function๏ผš่ฝฌๅŒ–ๆ–น็จ‹ใ€‚้€šๅธธไธŽไปฃไปทๆœ‰ๅ…ณ

่ฟ˜ๆœ‰State space graph ๅ’Œ Search Tree

  • State space graph๏ผšไธ€็งๆœ็ดข้—ฎ้ข˜็š„ๆ•ฐๅญฆ่กจ็คบๅฝขๅผใ€‚nodeไปฃ่กจ็Šถๆ€๏ผŒarcไปฃ่กจ่ฝฌๆข

    image-20240409203318538

  • Search Tree๏ผš่งฃๅ†ณๆœ็ดข้—ฎ้ข˜็š„่ฟ‡็จ‹ๅฏไปฅ่ขซๆŠฝ่ฑกๆˆไธบไธ€ๆฃตๆœ็ดขๆ ‘ใ€‚

    image-20240409203443485

ๅผ€ๅง‹็Šถๆ€ไธบๆ น่Š‚็‚น๏ผŒๅญฉๅญๅฏนๅบ”ๅŽ็ปง๏ผŒ่Š‚็‚นๆ˜พ็คบ็Šถๆ€๏ผŒไฝ†ๅฏนๅบ”ไบŽๅฎž็Žฐ่ฟ™ไบ›็Šถๆ€็š„่ฎกๅˆ’๏ผˆๅณ่ทฏๅพ„๏ผ‰ใ€‚

้€š็”จๆ ‘ๆœ็ดข

  • Frontier: ๅญ˜ๅ‚จ็ญ‰ๅพ…ๆ‰ฉๅฑ•็š„่Š‚็‚นใ€‚

  • Expansion: ๆŸฅๆ‰พๅนถๆ˜พ็คบ่Š‚็‚น็š„ๅญ่Š‚็‚นใ€‚

  • Expansion strategy: ๆฅๅ†ณๅฎšๆ‰ฉๅฑ• Frontier ไธญ็š„ๅ“ชไธช่Š‚็‚น๏ผŒไนŸ็งฐไธบexploreใ€‚

DFS

What is the order of the nodes to be expanded by DFS in this example (tie will be broken alphabetically)?

S -> A -> B -> C -> G

BFS

S -> A -> C -> G

Constraint Satisfaction Problems (CSP)

ไธŠ้ขๅฑ•็คบ็š„ๆœ็ดข้—ฎ้ข˜้ƒฝๆ˜ฏplanning้—ฎ้ข˜๏ผŒๆˆ‘ไปฌๅ…ณๅฟƒๅˆฐ็›ฎๆ ‡็š„่ทฏๅพ„ใ€‚

่ฟ˜ๆœ‰ไธ€็ง้—ฎ้ข˜ๆ˜ฏIdentification้—ฎ้ข˜๏ผŒๆˆ‘ไปฌไธๅ…ณๅฟƒๅˆ†้…่ฟ‡็จ‹๏ผŒ้กบๅบ๏ผŒๅชๅ…ณๅฟƒๅˆ†้…็ป“ๆžœ๏ผŒๆฏ”ๅฆ‚่ฏดๅ‡บ็งŸ่ฝฆๅˆ†้…๏ผŒn็š‡ๅŽใ€‚

่€ŒCSP้—ฎ้ข˜ๅฐฑๆ˜ฏไธ€็ง็ป†ๅˆ†็š„identification้—ฎ้ข˜๏ผŒCSPๆœ‰้œ€่ฆๆปก่ถณ็š„็บฆๆŸ(constraints)๏ผŒไฝ†ๅฏน็ป“ๆžœๆฒกๆœ‰ๅๅฅฝใ€‚

constraintsๆ˜ฏๆŒ‡ๅˆๆณ•่งฃๅ†ณๆ–นๆกˆไธ่ƒฝ่ฟๅ็š„็กฌๆ€ง็บฆๆŸใ€‚ๅๅฅฝๆœ‰ๆ—ถ่ขซ็งฐไธบ่ฝฏ็บฆๆŸ๏ผˆๆˆ–็›ฎๆ ‡๏ผ‰๏ผŒๆˆ‘ไปฌ้œ€่ฆไผ˜ๅŒ–๏ผŒไพ‹ๅฆ‚๏ผŒๆœ€ๅฐๅŒ–ๆˆๆœฌใ€‚ไนŸๅฐฑๆ˜ฏ่ฏด๏ผŒCSP้—ฎ้ข˜ไธ้œ€่ฆ่€ƒ่™‘ๆˆๆœฌ๏ผŒๅช่ฆ่พพๆˆ็›ฎๆ ‡ๅณๅฏใ€‚

CSP็”ฑไปฅไธ‹ๅ‡ ้ƒจๅˆ†็ป„ๆˆ๏ผš

  • variables

  • Domain for each variable

  • constraints

ๅœจCSPไธญ๏ผŒๅฆ‚ๆžœๆฏไธชvariables้ƒฝๆœ‰ไธ€ไธชๅ€ผ๏ผŒๅˆ™assignmentๆ˜ฏcomplete็š„๏ผŒๅฆๅˆ™ๅฎƒๆ˜ฏpartial็š„ใ€‚solutionๆ˜ฏๆปก่ถณๆ‰€ๆœ‰constraintsๆกไปถ็š„complete assignmentใ€‚

ไพ‹ๅญ๏ผš

CSPๅ’Œๆ ‡ๅ‡†ๆœ็ดข้—ฎ้ข˜็š„ๅฏนๆฏ”๏ผš

ๆ ‡ๅ‡†ๆœ็ดข้—ฎ้ข˜๏ผš

  • stateๆ˜ฏ้ป‘็›’๏ผŒๅฏไปฅๆ˜ฏไปปๆ„็š„ๆ•ฐๆฎ็ป“ๆž„

  • ็›ฎๆ ‡ๆต‹่ฏ•ๅฏไปฅๆ˜ฏๅฏน็Šถๆ€็š„ไปปไฝ•ๅ‡ฝๆ•ฐ

CSP๏ผš

  • ็Šถๆ€่ขซๅฎšไน‰ไธบๅ˜้‡X1, X2...๏ผŒdomainไธบD1, D2

  • ็›ฎๆ ‡ๆต‹่ฏ•ๆ˜ฏไธ€็ป„constraintsๆŒ‡ๅฎšๅ˜้‡ๅ€ผ็š„ๅ…่ฎธ็ป„ๅˆใ€‚

CSP้—ฎ้ข˜ไพ‹ๅญ

ไพ‹1: ๅ›พ็€่‰ฒ

nodes correspond to the variables and arcs reflect the constraints.ๆ‰€ไปฅTๅ’ŒVไธญ้—ดๆฒกๆœ‰arc

ไพ‹2: ๆ•ฐ็‹ฌ

ๅฝ“constraintๆถ‰ๅŠๅˆฐ่ถ…่ฟ‡ไธคไธชๅ˜้‡ๆ—ถ๏ผŒ็”จsquareๅ’Œconnetๆฅ่กจ็คบ็บฆๆŸ

ไพ‹3: ๆ‰ซ้›ท

ไพ‹4: N็š‡ๅŽ

่กŒ็›ธๅŒ๏ผŒไธๅŒๅˆ—่ฆไนˆ00 ่ฆไนˆ01 ่ฆไนˆ10.ๅŽ้ขๅฐฑๅ˜ๆˆๅˆ—็›ธๅŒ๏ผŒๅฏน่ง’็บฟ็›ธๅŒ

CSP็š„ๅˆ†็ฑป

variables

  • ๅŸŸๆœ‰้™็ฆปๆ•ฃๅ˜้‡

  • ๅŸŸๆ— ้™็ฆปๆ•ฃ/่ฟž็ปญๅ˜้‡๏ผŒไพ‹ๅฆ‚ๆถ‰ๅŠๆ—ถ้—ด็š„ๅ˜้‡

constraints

  • ไธ€ๅ…ƒ๏ผŒไบŒๅ…ƒๅ’Œ้ซ˜้˜ถ็บฆๆŸ๏ผˆUnary, binary and high-order๏ผ‰๏ผŒไนŸๅฐฑๆ˜ฏ่ฟ™ไธช็บฆๆŸๆถ‰ๅŠๅˆฐๅคšๅฐ‘ไธชๅ˜้‡

ๅฆ‚ๆžœๆœ‰nไธชๅ˜้‡๏ผŒๆฏไธชๅŸŸไธบd๏ผŒ้‚ฃไนˆๆœ‰O(d^n)็š„assignmentsใ€‚assignmentsไธ็ฎกๅฏน้”™

ๅฏนไบŽ4็š‡ๅŽ้—ฎ้ข˜๏ผŒๅฐฑๆœ‰2^16็งๅˆ†้…

็œŸๅฎžไธ–็•Œ็š„CSP

  • ๅˆ†้…้—ฎ้ข˜๏ผš่ฐๆ•™ๅ“ชไธช็ญ

  • ๆ—ถ้—ด่กจ้—ฎ้ข˜๏ผšๆฏไธช็ญๅœจไป€ไนˆๆ—ถๅ€™ๅœจๅ“ชไธŠ่ฏพ

  • ็กฌไปถ้…็ฝฎ

  • ไบค้€š่ฐƒๅบฆ

  • ๅทฅๅŽ‚่ฐƒๅบฆ

  • ็”ต่ทฏๅธƒๅฑ€

  • ๆ•…้šœ่ฏŠๆ–ญ

่ฎธๅคšCSP้—ฎ้ข˜ไนŸๅฏไปฅ่€ƒ่™‘ๅๅฅฝ๏ผˆๅณ็›ฎๆ ‡๏ผ‰๏ผŒๅœจ่ฟ™็งๆƒ…ๅ†ตไธ‹๏ผŒๅฎƒไปฌไผšๅ˜ๆˆๅ—้™ไผ˜ๅŒ–้—ฎ้ข˜ใ€‚

ไพ‹้ข˜

Variables: T, W, O, F, U, R, a1, a2

Domain: T, W, O, F, U, R: {0..9} a1, a2: {0, 1}

Constrain:

  • O+O = a1*10+R

  • W+W+a1 = a2*10+U

  • T+T+a2 = F*10+O

  • F != 0

  • ๆณจๆ„๏ผšalldiff(T,W,O,F,U,R)

Generate and Test - Brute Force

  • ่ฏฆๅฐฝ็š„็”Ÿๆˆ-ๆต‹่ฏ•็ฎ—ๆณ•ๆ˜ฏ็”Ÿๆˆๆ‰€ๆœ‰ๅฎŒๆ•ด็š„่ต‹ๅ€ผ๏ผŒ็„ถๅŽไพๆฌกๆต‹่ฏ•ๅฎƒไปฌ๏ผŒๅนถ่ฟ”ๅ›žๆปก่ถณๆ‰€ๆœ‰็บฆๆŸๆกไปถ็š„็ฌฌไธ€ไธชใ€‚

  • ๅฎƒ้œ€่ฆๅญ˜ๅ‚จๆ‰€ๆœ‰ ๐‘‘^๐‘› ไธชๅฎŒๆ•ด็š„่ต‹ๅ€ผ๏ผŒๅ…ถไธญ ๐‘‘ ๆ˜ฏๅŸŸๅคงๅฐ๏ผŒ๐‘› ๆ˜ฏๅ˜้‡ๆ•ฐ้‡ใ€‚

    ๆ‰€ไปฅๆˆ‘ไปฌ้œ€่ฆๅˆซ็š„็ฎ—ๆณ•

Solve CSPs by standard search formulation

้€š่ฟ‡ไธ€่ˆฌ็š„ๆœ็ดขๆ–นๆณ•่งฃๅ†ณCSP

  • Initial state: the empty assignment {}

  • Successor function: assign a value to an unassigned variable

  • Goal: the current assignment is complete and satisfies all the constraints.

BFS

DFS

Check constraints as you go

ไพ‹ๅญ๏ผšๆœ‰ไธ‰ไธชๅ˜้‡ Aใ€B ๅ’Œ C๏ผŒๅฎƒไปฌ็š„ๅ–ๅ€ผ่Œƒๅ›ดๅ‡ไธบ {0, 1, 2}ใ€‚็บฆๆŸๆกไปถๆ˜ฏ A<B<Cใ€‚ๅฆ‚ๆžœๅ‡บ็Žฐๅนณๅฑ€๏ผŒๅˆ™ๆŒ‰ๅญ—ๆฏ้กบๅบๅ’Œๆ•ฐๅญ—ๅคงๅฐๆฅๅ†ณๅฎš่ƒœ่ดŸใ€‚

่ฟ™็งๆ–นๆณ•็š„ๆ€ๆƒณๆ˜ฏ๏ผŒๅœจๆฏๆญฅๅˆ†้…็š„ๆ—ถๅ€™๏ผŒ้ƒฝๅชๅˆ†้…ไธ็ ดๅconstraints็š„ๅ€ผใ€‚ๅฏ่ƒฝ้œ€่ฆ่ฟ›่กŒไธ€ไบ›่ฎก็ฎ—ๆฅๆฃ€ๆŸฅ็บฆๆŸๆกไปถ๏ผŒๆฏ”ๅฆ‚โ€œๅขž้‡็›ฎๆ ‡ๆต‹่ฏ•โ€ใ€‚

Consider one variable at a layer

ๅ›žๆบฏๆ˜ฏไธ€็งๆทฑๅบฆไผ˜ๅ…ˆๆœ็ดขๆ–นๆณ•๏ผŒๅ…ทๆœ‰ไธคไธช้ขๅค–็š„็‰น็‚น๏ผš1๏ผ‰ๅœจ่ฟ›่กŒๆ—ถๆฃ€ๆŸฅ็บฆๆŸๆกไปถ๏ผŒ2๏ผ‰่€ƒ่™‘ไธ€ไธชๅ˜้‡ๅœจๆฏไธ€ๅฑ‚ใ€‚

Basic strategy: Backtracking

Speed-ups

ไธคไธชๆƒณๆณ•๏ผš

โ—† Filtering๏ผšๆˆ‘ไปฌ่ƒฝๅฆๆ—ฉๆœŸๆฃ€ๆต‹ๅˆฐไธๅฏ้ฟๅ…็š„ๆ•…้šœ

โ—† Ordering๏ผšไธ‹ไธ€ไธชๅบ”่ฏฅๅˆ†้…ๅ“ชไธชๅ˜้‡

Speed-up: Filtering

่ทŸ่ธชๆœชๅˆ†้…ๅ˜้‡ๅ’Œไบคๅ‰ๅŸŸ๏ผŒๆŽ’้™คไธ่‰ฏ้€‰้กนใ€‚ๆœ‰ไธๅŒ็š„่ฟ‡ๆปคๆ–นๆณ•ใ€‚forward checkingๆ˜ฏๅ…ถไธญไน‹ไธ€ใ€‚

forward checking๏ผšๅฝ“ๆทปๅŠ ๅˆฐ็Žฐๆœ‰ๅˆ†้…ๆ—ถ่ฟๅ็บฆๆŸ็š„็›ธ้‚ปๅ˜้‡ๅ€ผ่ฟ›่กŒๅˆ’ๆމใ€‚ไนŸๅฐฑๆ˜ฏ่ฏด๏ผŒๅฝ“ๅˆ†้…ไธ€ไธชๅ˜้‡ๆ—ถ๏ผŒๅˆ’ๆމๆ‰€ๆœ‰ๅ…ถ้‚ปๅฑ…ๅŸŸไธŠ็Žฐๅœจ่ขซ่ฟๅ็š„ไปปไฝ•ๅ†…ๅฎนใ€‚

Forward checking

ๆœ‰ไธ‰ไธชๅ˜้‡Aใ€Bๅ’ŒC๏ผŒๅฎƒไปฌ็š„ๅ–ๅ€ผ่Œƒๅ›ดไธบ{0, 1, 2}ใ€‚็บฆๆŸๆกไปถๆ˜ฏB>A>Cใ€‚ๅฆ‚ๆžœๅ‡บ็Žฐๅนณๅฑ€๏ผŒๅˆ™ๆŒ‰ๅญ—ๆฏ้กบๅบๅ’Œๆ•ฐๅญ—้กบๅบ่ฟ›่กŒๆ‰“็ ดใ€‚

่ฟ™ๆ˜ฏไธ€ๅผ€ๅง‹็š„็Šถๆ€ใ€‚ๅฝ“A่ขซๅˆ†้…ไธบ0ๆ—ถ๏ผŒๅ…ถ้‚ปๅฑ…Bๅ’ŒC็š„ๅŸŸๅ‡ๅฐ‘๏ผŒๅ› ๆญคๅพˆๅฟซๅฐฑ็Ÿฅ้“่ฟ™ไธช่ต‹ๅ€ผๆ˜ฏไธๅˆๆณ•็š„๏ผˆๅ› ไธบC็Žฐๅœจไธบ็ฉบ๏ผ‰ใ€‚

image-20240409223333532

image-20240409223430818

Speed-up: Ordering

่€ƒ่™‘ๅ‰ฉไฝ™ๅ€ผ็š„ๆœ€ๅฐๆ•ฐ้‡๏ผŒๅณ้€‰ๆ‹ฉๅœจๅ…ถๅฎšไน‰ๅŸŸไธญๅ‰ฉไฝ™ๅˆๆณ•ๅ€ผๆœ€ๅฐ‘็š„ๅ˜้‡ใ€‚

ไพ‹ๅญ๏ผšๆœ‰ไธ‰ไธชๅ˜้‡ Aใ€B ๅ’Œ C๏ผŒๅฎƒไปฌ็š„ๅ–ๅ€ผ่Œƒๅ›ดๅ‡ไธบ {0, 1, 2}ใ€‚็บฆๆŸๆกไปถๆ˜ฏ A โ‰ค B < Cใ€‚ๅฆ‚ๆžœๅ‡บ็Žฐๅนณๅฑ€๏ผŒๅˆ™ๆŒ‰ๅญ—ๆฏ้กบๅบๅ’Œๆ•ฐๅญ—ๅคงๅฐๆฅๅ†ณๅฎš่ƒœ่ดŸใ€‚

ๅฝ“A่ขซๅˆ†้…ไธบ0็š„ๆ—ถๅ€™๏ผŒ็”ฑไบŽBๅคงไบŽ็ญ‰ไบŽA๏ผŒๆ‰€ไปฅBไธบ012๏ผŒCๅคงไบŽA๏ผŒๆ‰€ไปฅไธบ12๏ผŒๆ‰€ไปฅๅ…ˆๅˆ†้…C๏ผŒๅ†ๅˆ†้…B

Also called โ€œmost constrained variableโ€ or โ€œfail-fastโ€ ordering

็ป“ๅˆ๏ผšBacktracking + Forward Checking + Ordering

ๆœ‰ไธ‰ไธชๅ˜้‡A๏ผŒB๏ผŒC๏ผŒๆ‰€ๆœ‰็š„ๅŸŸ้ƒฝๆ˜ฏ{0, 1, 2}ใ€‚็บฆๆŸๆกไปถ๏ผšA โ‰ค B < C ๅ’Œ A + B + C = 3ใ€‚ๆ‰“็ ดๅนณๅฑ€็š„้กบๅบๆ˜ฏๆŒ‰ๅญ—ๆฏ่กจๅ’Œๆ•ฐๅญ—ๆŽ’ๅบใ€‚ไฝฟ็”จๅ›žๆบฏใ€ๅ‰ๅ‘ๆฃ€ๆŸฅๅ’ŒๆŽ’ๅบๆฅ่งฃๅ†ณ้—ฎ้ข˜

Tree Searchๆ–นๆณ•๏ผš็ณป็ปŸๅœฐๆœ็ดขๅˆ†้…็ฉบ้—ดใ€‚

  • ไปŽไธ€ไธช็ฉบ็š„ๅˆ†้…ๅผ€ๅง‹ใ€‚

  • ไธบๆœชๅˆ†้…็š„ๅ˜้‡่ต‹ๅ€ผ๏ผŒๅนถๅœจๆ‰พๅˆฐ่งฃๅ†ณๆ–นๆกˆไน‹ๅ‰ๅค„็†็บฆๆŸใ€‚

ไฝ†ๅฆ‚ๆžœ็ฉบ้—ดๅคชๅคง็”š่‡ณๆ˜ฏๆ— ้™็š„๏ผŒ้‚ฃไนˆๅœจไปปไฝ•ๅˆ็†็š„ๆ—ถ้—ดๅ†…๏ผŒ็ณป็ปŸๅŒ–ๆœ็ดขๅฏ่ƒฝไผšๅคฑ่ดฅๅœฐ่€ƒ่™‘ๅˆฐ่ถณๅคŸๅคš็š„็ฉบ้—ดไปฅๆไพ›ไปปไฝ•ๆœ‰ๆ„ไน‰็š„็ป“ๆžœใ€‚

Local Searchๆ–นๆณ•๏ผšไธๆ˜ฏ็ณป็ปŸๅœฐๆœ็ดข็ฉบ้—ด๏ผŒ่€Œๆ˜ฏ่ฎพ่ฎกไธบๅœจๅนณๅ‡ๆƒ…ๅ†ตไธ‹ๅฟซ้€Ÿๆ‰พๅˆฐ่งฃๅ†ณๆ–นๆกˆ

  • ไปŽ๏ผˆไปปๆ„๏ผ‰ๅฎŒๆ•ดๅˆ†้…ๅผ€ๅง‹๏ผŒๅ› ๆญคๅฏไปฅ่ฟๅ็บฆๆŸใ€‚

  • ๅฐ่ฏ•้€š่ฟ‡่ฟญไปฃๆ”น่ฟ›ๅˆ†้…ใ€‚

ๆต็จ‹๏ผš

  • ้šๆœบ็”Ÿๆˆไธ€ไธชcomplete assignment

  • ๅฝ“solutionๆฒกๆœ‰ๆปก่ถณ๏ผŒๆˆ–่€…stop criterionๆฒกๆœ‰่พพๅˆฐ

    • ็ฌฌไธ€ๆญฅ๏ผšๅ˜้‡้€‰ๆ‹ฉ - ้šๆœบ้€‰ๆ‹ฉไธ€ไธช่ฟๅ็บฆๆŸ็š„ๅ˜้‡ใ€‚

    • ็ฌฌไบŒ้ƒจ๏ผšๅ€ผ้€‰ๆ‹ฉ๏ผˆๆœ€ๅฐๅ†ฒ็ชๅฏๅ‘ๅผ๏ผ‰- ้€‰ๆ‹ฉ่ฟๅ็บฆๆŸๆœ€ๅฐ‘็š„ๅ€ผใ€‚

ไพ‹ๅญ๏ผšA<=B<C

้ฆ–ๅ…ˆ๏ผŒ้šๆœบ็”Ÿๆˆไธ€ไธชๅˆ†้…๏ผŒA1๏ผŒB0, C2

ๅ‘็ŽฐA๏ผŒB่ฟๅ่ฆๆฑ‚๏ผŒๆ‰€ไปฅๆ นๆฎๅญ—ๆฏ่กจ้€‰ๆ‹ฉๅ˜้‡A๏ผŒ็”ฑไบŽ0่ฟๅๆœ€ๅฐ‘็š„็บฆๆŸ๏ผŒๆ‰€ไปฅA้€‰ๆ‹ฉ0. A0, B0, C2, ๆปก่ถณๆกไปถใ€‚

้—ฎ้ข˜๏ผš

Local Search็†่ฎบไธŠไธๆ€ปๆ˜ฏ่ƒฝๆ‰พๅˆฐ็ญ”ๆกˆ๏ผŒๅŸบไบŽ้—ฎ้ข˜็š„landscapeๅ’Œsearch strategy๏ผŒไฝ†ๆ˜ฏๅฎž่ทตไธŠ๏ผŒๅŸบๆœฌ่ƒฝๅœจ50ๆญฅไน‹ๅ†…ๅฎŒๆˆmillion-queens.

Local Search - N็š‡ๅŽ

้ฆ–ๅ…ˆ้šๆœบ็”Ÿๆˆไธ€ไธช็Šถๆ€๏ผŒ{1,1,1,1}

็„ถๅŽๅ‘็Žฐๆฒกๆœ‰ๆปก่ถณ็ป“ๆžœ๏ผŒๆ‰€ไปฅ้šๆœบ้€‰ๆ‹ฉQ3ๅ˜ๅŒ–ใ€‚ไปŽๅทฆๅˆฐๅณ่ฟๅ็š„ๆ•ฐ้‡ๅˆ†ๅˆซๆ˜ฏ๏ผš3 2 1 0๏ผŒๆ‰€ไปฅ็Šถๆ€ๅ˜ไธบ{1,1,4,1}

็„ถๅŽ้€‰ๆ‹ฉQ1ๅ˜ๅŒ–๏ผŒไปŽๅทฆๅˆฐๅˆ่ฟๅ2 2 0 2๏ผŒๆ‰€ไปฅๅ˜ๆˆ{3,1,4,1}

็„ถๅŽ้€‰ๆ‹ฉQ4ๅ˜ๅŒ–๏ผŒไปŽๅšๅˆฐๅณ่ฟๅ1 0 3 1๏ผŒๆ‰€ไปฅๅ˜ๆˆ{3,1,4,2}๏ผŒๆปก่ถณ๏ผŒๆ‰พๅˆฐsolution

Optimisation

ไผ˜ๅŒ–้—ฎ้ข˜๏ผšๅธฆๆœ‰ๅๅฅฝ็š„ๆœ็ดข้—ฎ้ข˜๏ผŒๅณๅ…ทๆœ‰็›ฎๆ ‡ๅ‡ฝๆ•ฐใ€‚

ๅฎƒไปฌ็”ฑVariablesใ€Domainๅ’ŒObjective Function็ป„ๆˆใ€‚

Objective๏ผš

  • ๅ•็›ฎๆ ‡๏ผˆSingle-objective๏ผ‰ไผ˜ๅŒ–้—ฎ้ข˜๏ผŒไพ‹ๅฆ‚๏ผŒๆ—…่กŒๅ•†้—ฎ้ข˜๏ผˆTSP๏ผ‰๏ผšๆœ€ๅฐๅŒ–ๆ—…่กŒๆˆๆœฌใ€‚

  • ๅคš็›ฎๆ ‡(Multi-objective)ไผ˜ๅŒ–้—ฎ้ข˜๏ผŒไพ‹ๅฆ‚๏ผŒๅœจTSPไธญๅขžๅŠ ไธ€ไธช้ขๅค–็š„็›ฎๆ ‡๏ผšๆœ€ๅฐๅŒ–ๆ—…่กŒๆ—ถ้—ดใ€‚

Constraints:

  • ๆ— ็บฆๆŸไผ˜ๅŒ–้—ฎ้ข˜ใ€‚

  • ็บฆๆŸไผ˜ๅŒ–้—ฎ้ข˜ใ€‚

Tree Searchๅฏ่ƒฝไผšๅคฑๆ•ˆ๏ผŒๅ› ไธบๆœ‰ไบ›search spaceๆ˜ฏ่ฟž็ปญ็š„๏ผŒLocal Searchๆ›ด็ฎก็”จ

Local Search for Optimisation

้€šๅธธๅฟซ้€Ÿไธ”็œๅ†…ๅญ˜

  • ๅฏๅค„็†ๆœ็ดข็Šถๆ€้šพไปฅ่กจ็คบ/ๅˆถๅฎš็š„้—ฎ้ข˜ใ€‚

  • ๅœจ้—ฎ้ข˜ๅ‘็”Ÿๅ˜ๅŒ–ๆ—ถ๏ผŒไพ‹ๅฆ‚ๅœจ่ˆช็ฉบๅ…ฌๅธ่ฐƒๅบฆ้—ฎ้ข˜ไธญ๏ผŒๅฏไปฅ็”จไบŽๅœจ็บฟ่ฎพ็ฝฎใ€‚

method๏ผš

  • ็ˆฌๅฑฑ็ฎ—ๆณ•๏ผŒไพ‹ๅฆ‚ๆขฏๅบฆไธ‹้™ใ€‚

  • ๆจกๆ‹Ÿ้€€็ซ๏ผŒ็ฆๅฟŒๆœ็ดข๏ผˆไฟ็•™ไธ€ไธชๅฐๅˆ—่กจๆœ€่ฟ‘่ฎฟ้—ฎ็š„่งฃๅ†ณๆ–นๆกˆ๏ผŒๅนถ็ฆๆญข็ฎ—ๆณ•่ฟ”ๅ›žๅˆฐ่ฟ™ไบ›่งฃๅ†ณๆ–นๆกˆ๏ผ‰ใ€‚

Backtracking Homework

่€ƒ่™‘ไปฅไธ‹4x4ๆ•ฐ็‹ฌ้—ฎ้ข˜๏ผŒๅ…ถไธญๆฏๅˆ—ใ€ๆฏ่กŒๅ’Œๅ››ไธชๅŒบๅŸŸ้ƒฝๅŒ…ๅซ1ๅˆฐ4็š„ๆ‰€ๆœ‰ๆ•ฐๅญ—ใ€‚ไฝฟ็”จๅธฆๆœ‰ๅ‰ๅ‘ๆฃ€ๆŸฅๅ’ŒๆŽ’ๅบ็š„ๅ›žๆบฏๆœ็ดขๆฅ่งฃๅ†ณ่ฟ™ไธช้—ฎ้ข˜ใ€‚

็ป™ๅ‡บ่ฆ่ฎฟ้—ฎ็š„ๆ‰€ๆœ‰็Šถๆ€็š„้กบๅบใ€‚ๅ‡่ฎพๅ•ๅ…ƒๆ ผ็š„ๅนณๅฑ€้ฆ–ๅ…ˆไปŽไธŠๅˆฐไธ‹ๆ‰“็ ด๏ผŒ็„ถๅŽไปŽๅทฆๅˆฐๅณๆ‰“็ ด๏ผŒๅนถไธ”ๆ•ฐๅญ—็š„ๅนณๅฑ€ๆŒ‰ๆ•ฐๅญ—้กบๅบๆ‰“็ ดใ€‚

Game is a search problem

ๆธธๆˆ้€šๅธธๆ˜ฏไธ€ไธชๅฏนๆŠ—ๆœ็ดข้—ฎ้ข˜๏ผŒไฝ ็š„ๅฏนๆ‰‹ไผšๅฏนไฝ ็š„็ญ–็•ฅๅ‘่กจๆ„่งใ€‚

Games็ฑปๅž‹

  • ๆธธๆˆไธญๆ˜ฏๅฆๆœ‰ไธ€ไบ›้šๆœบๅ› ็ด ๏ผŸ

    • ็กฎๅฎšๆ€ง๏ผŒไพ‹ๅฆ‚ ไบ•ๅญ—ๆฃ‹๏ผŒๅ›ฝ้™…่ฑกๆฃ‹๏ผŒไธญๅ›ฝ่ฑกๆฃ‹๏ผŒๅ›ดๆฃ‹

    • ไธ็กฎๅฎšๆ€ง๏ผŒๆ‰‘ๅ…‹็‰Œ๏ผŒ้บปๅฐ†

  • ๅ‡ ไธช็Žฉๅฎถ๏ผŸ

  • ๆ˜ฏๅฆๅฏนๆŠ—๏ผŸ

    • ้›ถๅ’Œๅšๅผˆ๏ผšไบ•ๅญ—ๆฃ‹๏ผŒไธ‹ๆฃ‹๏ผŒๅ›ดๆฃ‹๏ผŒๆ‰‘ๅ…‹

    • ้ž้›ถๅ’Œๅšๅผˆ๏ผšๅ›šๅพ’ๅ›ฐๅขƒ

  • ็Šถๆ€ๆ˜ฏๅฆๅฏ่ง๏ผŸ

    • ๅฎŒๆ•ดไฟกๆฏ๏ผšไบ•ๅญ—ๆฃ‹๏ผŒๅ›ฝ้™…่ฑกๆฃ‹๏ผŒไธญๅ›ฝ่ฑกๆฃ‹๏ผŒๅ›ดๆฃ‹

    • ไธๅฎŒๆ•ดไฟกๆฏ๏ผšๆ‰‘ๅ…‹๏ผŒ้บปๅฐ†

  • State๏ผšS๏ผŒๅˆๅง‹ไธบs0

  • Action๏ผšA

  • Transition function๏ผšS x A -> S

  • Terminal Test: S->(true, false)

  • Players:P = (1..N)

  • Utility(ๆ•ˆ็”จ) Function๏ผš๐‘†_๐‘ก๐‘’๐‘Ÿ๐‘š๐‘–๐‘›๐‘Žl ร— ๐‘ƒ โ†’ ๐‘…๏ผˆ็ป“ๆžœไธŠ็š„ๅ€ผ๏ผ‰

    • ไธ€ไธชๆ•ˆ็”จๅ‡ฝๆ•ฐ๏ผˆไนŸ็งฐไธบๅฎข่ง‚ๅ‡ฝๆ•ฐๆˆ–ๅ›žๆŠฅๅ‡ฝๆ•ฐ๏ผ‰ๅฎšไน‰ไบ†ไปฅ็ปˆ็ซฏ็Šถๆ€ ๐‘  ็ป“ๆŸ็š„ๆธธๆˆๅฏนไบŽ็Žฉๅฎถ ๐‘ ็š„ๆœ€็ปˆๆ•ฐๅ€ผใ€‚

    • ๆ•ˆ็”จๅฐฑๆ˜ฏachievable outcome๏ผŒๅ…ถๅฎžๅฐฑๆ˜ฏ็›ฎๅ‰ๅพ—ๅˆ†ใ€‚

    • ๅฏนไบŽN็š‡ๅŽ้—ฎ้ข˜๏ผŒๆœ‰ๆ•ˆ็š„็ป“ๆžœๅฐฑๆ˜ฏ1๏ผŒๆ— ๆ•ˆ็š„ๅฐฑๆ˜ฏ0

ๆœ็ดข็ฎ—ๆณ•็š„็›ฎๆ ‡๏ผšๅฏนไบŽไธ€ไธช็Žฉๅฎถ๏ผŒๆˆ‘ไปฌๅธŒๆœ›่ฏฅ็ฎ—ๆณ•่ƒฝๅคŸๆ‰พๅˆฐไธ€็ง็ญ–็•ฅ๏ผˆๆ”ฟ็ญ–๏ผ‰๏ผŒไธบๆฏไธช็Šถๆ€ๆŽจ่ไธ€ๆญฅ็งปๅŠจ๏ผŒไปฅไพฟไป–ไปฌๆœ€็ปˆๅฏไปฅ่Žทๅพ—ๆœ€ๅคงๅฏๅฎž็Žฐๆ•ˆ็”จใ€‚

ๅฏนไบŽไบ•ๅญ—ๆฃ‹็š„ๆ•ˆ็”จๅฎšไน‰๏ผš

Minmax

่Š‚็‚น็š„ๆžๅฐๅ€ผๆ˜ฏ็ปˆ็ซฏ็Šถๆ€็š„ๆ•ˆ็”จ๏ผŒไปŽ่ฏฅ่Š‚็‚นๅผ€ๅง‹๏ผŒไธคไธช็Žฉๅฎถ้ƒฝไผšๆœ€ไผ˜ๅœฐ่ฟ›่กŒๆธธๆˆใ€‚

ๅ› ๆญค๏ผŒๅŒไบบๆธธๆˆ็š„่ฟ‡็จ‹ๆ˜ฏไธ€ไธช็Žฉๅฎถ๏ผˆ็งฐไธบMax็Žฉๅฎถ๏ผ‰่ฆๆœ€ๅคงๅŒ–ๅ…ถๆ•ˆ็”จ๏ผŒ่€Œๅ…ถๅฏนๆ‰‹๏ผˆ็งฐไธบMin็Žฉๅฎถ๏ผ‰่ฆๆœ€ๅฐๅŒ–Max็š„ๆ•ˆ็”จใ€‚

ไพ‹ๅญ๏ผš

็ฌฌไธ€ไธช็Žฉๅฎถๆœ€ๅคงๅŒ–่‡ชๅทฑ็š„ๆ•ˆ็”จ๏ผŒๅฆไธ€ไธช็Žฉๅฎถๆœ€ๅฐๅŒ–่‡ชๅทฑ็š„ๆ•ˆ็”จใ€‚

Minmaxๆ—ถ้—ดๅคๆ‚ๅบฆไธบO(b^m), ็ฉบ้—ดๅคๆ‚ๅบฆไธบ(bm)๏ผŒbไธบๆฏไธช่Š‚็‚น็š„ๅˆ†ๆ”ฏๆ•ฐ๏ผŒmไธบๆœ€ๅคงๆทฑๅบฆ

ๅœจๅคงๅคšๆ•ฐๆƒ…ๅ†ตไธ‹๏ผŒ่งฃๅ†ณๅฎƒไปฌๆ˜ฏๅฎŒๅ…จไธๅฏ่กŒ็š„๏ผŒไฝ†ๆˆ‘ไปฌไธ้œ€่ฆๆœ็ดขๆ•ดไธชๆ ‘๏ผŒๆ‰€ไปฅ่ฆ็”จๅˆฐPruningๅ‰ชๆž

Alpha-Beta Game Tree Pruning

่ฟ˜ๆ˜ฏไธŠ้ข้‚ฃไธชๆ ‘

Alpha-Beta Pruning

โ—† ไธ€่ˆฌ้…็ฝฎ๏ผˆๅฏนไบŽไปฃ็†Max๏ผ‰

โ—† ่ฎฉ ๐‘Ž ๆ˜ฏMax็›ฎๅ‰่‡ณๅฐ‘ๅฏไปฅ่Žทๅพ—็š„ไปทๅ€ผใ€‚

โ—† ๆˆ‘ไปฌ็Žฐๅœจๆญฃๅœจ่ฎก็ฎ—ๆŸไธช่Š‚็‚น ๐‘› ็š„ๆœ€ๅฐๅ€ผ

โ—† ๅฝ“ๆˆ‘ไปฌๆŽข็ดข ๐‘› ็š„ๅญ่Š‚็‚นๆ—ถ๏ผŒๅฆ‚ๆžœๆˆ‘ไปฌๅ‘็Žฐ่ฏฅ่Š‚็‚น็š„ไปทๅ€ผๆฐธ่ฟœไธไผšๆฏ” ๐‘Ž ๆ›ดๅฅฝ๏ผˆๅฏนไบŽไปฃ็†Max๏ผ‰๏ผŒ้‚ฃไนˆๆˆ‘ไปฌๅฏไปฅๅœๆญข่€ƒ่™‘๐‘›็š„ๅ…ถไป–ๅญ่Š‚็‚นใ€‚

โ—† Alpha-beta pruning็š„็‰นๆ€ง

โ—† ๅฏนๆ น่Š‚็‚นๆฅ่ฏด๏ผŒไฟฎๅ‰ชๅฏนๆžๅฐๅŒ–ๅ€ผๆฒกๆœ‰ๅฝฑๅ“ใ€‚

โ—† ่‰ฏๅฅฝ็š„ๅญ่Š‚็‚นๆŽ’ๅบๆ้ซ˜ไบ†ไฟฎๅ‰ชๆ•ˆๆžœใ€‚

โ—† ๅฎŒ็พŽๆŽ’ๅบ็š„ๅคๆ‚ๅบฆ๏ผšO(b^(๐‘š/2))๏ผŒ่ฟ™ๆ„ๅ‘ณ็€ไฝ ๅฏไปฅๆฏ”ๅฏนๆ‰‹ๆทฑๅ…ฅๆœ็ดขไธคๅ€ใ€‚

โ—† ่ฎธๅคšๆธธๆˆ๏ผˆไพ‹ๅฆ‚ๅ›ฝ้™…่ฑกๆฃ‹ใ€ๅ›ดๆฃ‹๏ผ‰็š„ๅฎŒๅ…จๆœ็ดขไป็„ถๆ˜ฏๆ— ๆœ›็š„ใ€‚

Pruning Exercise

Q1:

Q2:

Last updated