NLP 제2과(검색)

8136 단어
최근에 스트레스가 너무 많아요. 0 주석 코드를 지속적으로 수정하고 변수가 아랍 숫자인 코드를 수정해요. 스트레스가 너무 많아요. 마음을 바로잡고 그런 버그가 없으면 우리가 뭘 해야 하나요?만약 매우 뛰어난 프로젝트가 있다면, 너 개인의 훌륭함을 나타낼 수 없을 것이다.몇 마디 푸념, 우리 오늘 계속해서 NLP에 대해 이야기하자.
우리는 먼저 문제를 던졌다. 우리는 땅에 앉아서 떨어질 것이다. 서직문역에서 소주가역까지 우리는 북경에 있는 친구들이 모두 알고 있다. 4호선을 타고 해전황장에서 10호선으로 바꾸면 도착한다. 아니면 우리가 직접 네비게이션을 켜서 찾아보면 된다.말하기는 간단하고, 생각도 간단하지만, 하기는 그리 간단하지 않다.우리는 현재 모든 노선의 역과 역으로 바뀐 데이터를 가지고 있다.기존의 데이터는 다음과 같습니다.
1호선:
사과원-고성-팔각놀이공원-팔보산-옥천로-오목송-만수로-공주분-군사박물관-계란지-남예사로-부흥문-서단-천안문서-천안문동-왕부정-동단-건국문-영안리-국무-대망로-사혜-사혜동
2호선:
서직문-적수담-고루거리-안정문-옹화궁-동직문-동사십조-조양문-건국문-북경역-숭문문-앞문-화평문-선무문-장춘가-부흥문-부성문-차공장-(서직문)
4호선:
국가도서관-동물원-서직문-신가구-평안리-서사-영경골목-서단-선무문-채소시장-도연정-북경남역-마자부르크-각문서-공익서교
5호선:
송가장-유가요-포황유-천단동문-자기구-숭문문문-동단-등시구-동사-장자충로-북신교-옹화궁-평화리북가-평화서교-혜신서가남구-혜신서가북구-대둔로동-북원로북-입수교남-입수교-천통원남-천통원북구
6호선:
금안교-사과원-양장-서황촌-료공장-전촌-해전5로거-자수사-화원교-백석교남-차공장서-차공장-평안리-북해북-남징고골목-동사-조양문-동대교-호가루-금대로-십리보-청년로-전파-황도-상영-초가집-물자학원-통주북관-통운문-북운하서-북운하동-하동-호가부동-하원-루원-루성루원
7호선:
북경서역-만자-달관영-광안문내-채시구-호방교-주시구-교만-자기구-광도문내-광도문외-쌍정-구룡산-교외정-백자만-화학공업-남루오장-환락곡풍경구-천두-쌍합-코크스공장
8호선 북쪽:
주신장-육지로-평서부-회룡관동거리-호영-육신-서소구-영태장-림추교-삼림공원 남문-올림픽공원-오체중심-북토성-안화교-안드리북가-고루거리-시찰해-남징고골목-중국미술관
8호선 남쪽:
주시구-육교-영정문외-계란원-해호둔-대홍문-대홍문남-화의-동고지-로켓만원-오복당-덕무-영해
9호선:
곽공장-풍대과학기술원-과이로-풍대남로-풍대동거리-칠리장-육리교-육리교동-북경서역-군사박물관-백더미-백석교남-국가도서관
10호선:
바구-소주 거리-해전황장-지춘리-지춘로-서토성-모란원-건덕문-북토성-안정문-혜신서가 남구-작약거-태양궁-삼원교-량마교-농업전람관-단결호가루-금대석조-국무역-쌍정-강송-판가원-십리하-분사-성수사-송가장-석류장-대홍
문-각문동-각문서-초교-기가묘-수경제무역-풍대역-진흙탕-서국-육리교-연화교-공주묘-서조어대-자수사-차도골-장춘교-화기영-(바구)
13호선:
서직문-대종사-지춘로-오도구-상지-서2기-용택-회룡관-호영-입수교-북원-망경서-작약거-광희문-유방-동직문
14호선 서쪽:
장곽장-원박원-기와요-곽장자-대정-칠리장-서국
14호선 동:
북경남역-도연교-영정문외-경태-포황유-방장-십리하-북공대서문-평낙원-구룡산-대망로-금대로-조양공원-대추영-동풍북교-장대-고가원-망경남-부통-망경-동호도-래광영-선각장
15호선:
봉백-순이-석문-남법신-후사욕-화이칸-국전-손하-마천영-최각장-망경동-망경-망경서-관장-대둔로동-안립로-올림픽공원-북모래사장-육도구-청화동로서구
16호선:
서원-농대남로-마련웅-서북왕-영풍남-영풍-둔작-벼향호로-온양로-북안하
8통선:
사혜-사혜동-고비점-미디어대학-쌍교-관장-팔리교-통주북원-과수원-아홉그루나무-이원-임하리-토교
창평선
창평서산구-13릉풍경구-창평-창평동관-북소웅-남소-사하고교원-사하-공화성-주신장-생명과학원-서2기
이장선:
송가장-초촌-소홍문-구궁-이장교-이장문화원-만원가-영경동가-영창동가-동제남로-경해로-차도남-차도-이장역
방산선:
곽공장-대포대-논-장양-울타리방-광양성-양향대학성북-양향대학성-양향대학성서-양향남관-소장-염촌동
공항 노선
동직문-삼원교 -3번 터미널 -2번 터미널
대흥선
공익서교-신궁-서홍문-고미점북-고미점남-대추원-청원로-황촌서대가-황촌역-의화장-생물의약기지-천궁원
S1선
돌공장-소원-율원장-상안-교호영-사도교-금안교
서쪽 교외선
바구-이화원 서문-다방-만안-식물원-향산
데이터는 대략 이 정도입니다. 그러면 우리는 어떻게 우리가 원하는 데이터를 검색합니까?우리 우선 우리의 문제를 분석해 봅시다.우리는 서직문에서 출발하여 소주 거리에 도착해야 한다. 쉽게 우리는 우리가 4호선을 만들어야 한다는 것을 알게 되었다. 그리고는?그리고 우리 어디 가요?
우리는 서직문에서 차를 탄 후에 저수지, 신가구, 동물원, 대종사, 차공장이 있었다.이 다섯 방향은 선택할 수 있다.우리 먼저 프로그램을 하나 쓰고 어디든지 먼저 가자.
우리는 지금 데이터를 깨끗이 씻고,우리가 원하는 모습으로: {'사과원': ['고성','금안교','양장'],'고성': ['사과원','팔각 놀이공원','팔각 놀이공원'],'팔각 놀이공원': ['고성','팔보산'],'팔보산': ['팔각 놀이공원','옥천로','옥천로','옥천로': [팔보산','팔보산','팔보산','소나무 다섯 그루','소나무 다섯 그루': ['옥천로','옥천로','만수길','만수길','만수길','만수길','만수길'공주','공주','백수길','송'공주','5그루'공주','송''공주','송'''공주','''송'''다음을 수행합니다.['만수로','군사박물관','연화교','서조어대','군사박물관','''''''공주묘','계란지','북경서역','백적자','계란지',''군사박물관','남예사로','남예사로','남예사로','남예사로': ['계란지','부흥문','부흥문','부흥문','부흥문':'남예사로','서단','서단','서단','장춘성가','부문','부문','부흥문','서문','서문','서문','부흥문','서문','서문','서문','서문','부흥문','서문','서문','서문','서문','선무문','영경골목'],'천안문서': ['서단','천안문동'],'천안문동': ['천안문서','왕푸징'],......},그런 거야.우리는 모든 역을 키로 삼아 도착할 수 있는 역을value 목록으로 설정합니다.
그리고 저희 코드를 먼저 보도록 하겠습니다.
def breadth_first_search(start, arrive, connrction_grpah):
    pathes = [[start]]
    visitied = set()

    while pathes:
        path = pathes.pop(0)
        froninter = path[-1]

        if froninter in visitied:
            continue
        successors = connrction_grpah[froninter]

        for city in successors:
            new_path = path + [city]
            pathes.append(new_path)

            if city == arrive:
                return new_path
        visitied.add(froninter)

우리는 우리가 우리의 시발소를 얻은 후에 우리가 방금 씻은 사전을 두루 훑어보면 시발소에서 도착할 수 있는 첫 번째 역을 얻을 수 있고, 그 다음에 우리는 순서대로 이 역들을 두루 훑어볼 수 있다는 것을 알 수 있다.우리는 우리가 먼저 한 정거장에 도착한 정거장을 두루 돌아다닌 다음에 두 정거장에 도착할 수 있는 정거장을 차례대로 두루 돌아다닌다. 차례대로 유추해 보면 우리가 도착한 정거장은 층층이 돌아다닌다. 여기서 우리가 오늘 하고 싶은 말, 즉 넓이가 우선적으로 돌아다닌다는 것을 알 수 있다.밤을 하나 들면 우리가 큰 나무를 두루 돌아다닌다. 우리는 먼저 주요 줄기를 얻는다. 먼저 주요 줄기가 우리가 원하는 것이 있는지, 없는지, 좋아, 우리는 계속한다. 가지 줄기를 본 다음에 잎을 본다. 즉, 우리의 각 층은 거의 동시에 두루 돌아다닌다. 이와 반대로 우리는 깊이 있는 우선 검색이 있다. 코드를 살펴보자.
def depth_first_search(start, arrive, connrction_grpah):
    pathes = [[start]]
    visitied = set()

    while pathes:
        path = pathes.pop(0)
        froninter = path[-1]

        if froninter in visitied:
            continue
        successors = connrction_grpah[froninter]

        for city in successors:
            if city in path:
                continue
            new_path = path + [city]
            pathes.append(new_path)

            if city == arrive:
                return new_path
        visitied.add(froninter)
        pathes = sorted(pathes, key=len, reverse=True)

이전 코드와 거의 같다. 단지 하나의 순서를 추가했을 뿐이다. 즉, 우리는 새로운 노선을 얻었다. 우리는 이 노선을 계속 검색할 것이다. 이 노선이 통하지 않을 때까지 우리는 다른 길을 계속 갈 것이다. 즉, 위에서 말한 바와 같이 우리는 먼저 큰 나무의 줄기를 본 다음에 가지와 잎을 보고 다시 고개를 돌려 다른 가지와 다른 잎을 본다.이것이 바로 우리가 말한 깊이 우선 검색이다.
이 블로그는 쓰기가 비교적 촉박하고 시간이 촉박하며 업무 스트레스가 크다. 게다가 나도 처음으로 알고리즘을 접했고 많은 지식을 아직 배워야 한다. 처음에 나는python의 기초가 괜찮다고 생각했는데 실제로 말하자면 그렇지 않다.
우리 다음 블로그에서 도수와 사다리가 떨어지는 것을 다시 한 번 이야기하고, 늦지 않으면 도수를 바탕으로 의합하는 조작을 다시 한 번 이야기하자.
 
 

좋은 웹페이지 즐겨찾기