最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)經(jīng)典算法拓?fù)渑判颉⒆址ヅ渌惴ê妥钚∩蓸鋵?shí)例

 更新時間:2023年08月03日 08:32:38   作者:老王學(xué)長  
這篇文章主要介紹了Python實(shí)現(xiàn)經(jīng)典算法拓?fù)渑判?、字符串匹配算法和最小生成樹?shí)例,拓?fù)渑判?、字符串匹配算法和最小生成樹是?jì)算機(jī)科學(xué)中常用的數(shù)據(jù)結(jié)構(gòu)和算法,它們在解決各種實(shí)際問題中具有重要的應(yīng)用價(jià)值,需要的朋友可以參考下

一、拓?fù)渑判?/h2>

拓?fù)渑判蚴且环N對有向無環(huán)圖(DAG)進(jìn)行排序的算法。它可以解決依賴關(guān)系的排序問題,常用于構(gòu)建任務(wù)調(diào)度、編譯器優(yōu)化等領(lǐng)域。

拓?fù)渑判蛩惴ǖ幕舅枷胧峭ㄟ^不斷刪除入度為0的節(jié)點(diǎn),并更新相關(guān)節(jié)點(diǎn)的入度,直到所有節(jié)點(diǎn)都被訪問。

示例問題:課程安排問題 給定一些課程和它們的先修課程關(guān)系,要求安排課程的學(xué)習(xí)順序,使得先修課程在后修課程之前學(xué)習(xí)。

示例代碼:

from collections import defaultdict, deque
def topological_sort(num_courses, prerequisites):
    # 構(gòu)建鄰接表和入度數(shù)組
    graph = defaultdict(list)
    indegree = [0] * num_courses
    for course, prereq in prerequisites:
        graph[prereq].append(course)
        indegree[course] += 1
    # 使用隊(duì)列進(jìn)行拓?fù)渑判?
    queue = deque()
    for course in range(num_courses):
        if indegree[course] == 0:
            queue.append(course)
    result = []
    while queue:
        course = queue.popleft()
        result.append(course)
        for neighbor in graph[course]:
            indegree[neighbor] -= 1
            if indegree[neighbor] == 0:
                queue.append(neighbor)
    if len(result) != num_courses:
        return []
    return result
# 示例用法
num_courses = 4
prerequisites = [[1, 0], [2, 0], [3, 1], [3, 2]]
result = topological_sort(num_courses, prerequisites)
print("課程學(xué)習(xí)順序:", result)

二、字符串匹配算法

字符串匹配算法用于在文本串中查找給定模式串的出現(xiàn)位置。常見的字符串匹配算法包括暴力匹配算法、KMP算法、Boyer-Moore算法等。這些算法根據(jù)不同的思想和技巧,實(shí)現(xiàn)了高效的字符串匹配過程。

示例問題:在文本串中查找模式串 給定一個文本串和一個模式串,要求在文本串中查找模式串的出現(xiàn)位置。

示例代碼:

def string_match(text, pattern):
    m, n = len(text), len(pattern)
    for i in range(m - n + 1):
        j = 0
        while j < n:
            if text[i + j] != pattern[j]:
                break
            j += 1
        if j
 == n:
            return i
    return -1
# 示例用法
text = "Hello, World!"
pattern = "World"
result = string_match(text, pattern)
if result != -1:
    print("模式串在文本串中的位置:", result)
else:
    print("模式串不存在于文本串中")

三、最小生成樹

最小生成樹是一種在無向帶權(quán)圖中找到一棵包含所有頂點(diǎn)的生成樹,并且使得樹上所有邊的權(quán)值之和最小的算法。常用的最小生成樹算法包括Prim算法和Kruskal算法。

示例問題:電網(wǎng)規(guī)劃問題 給定一個城市的地理信息和建設(shè)電網(wǎng)的成本信息,要求設(shè)計(jì)一種電網(wǎng)規(guī)劃方案,使得連接城市的成本最小。

示例代碼:

from heapq import heapify, heappop, heappush
def minimum_spanning_tree(graph):
    visited = set()
    start_vertex = list(graph.keys())[0]
    visited.add(start_vertex)
    edges = [(cost, start_vertex, next_vertex) for next_vertex, cost in graph[start_vertex]]
    heapify(edges)
    while edges:
        cost, u, v = heappop(edges)
        if v not in visited:
            visited.add(v)
            for next_vertex, next_cost in graph[v]:
                if next_vertex not in visited:
                    heappush(edges, (next_cost, v, next_vertex))
    return visited
# 示例用法
graph = {
    'A': [('B', 5), ('C', 1)],
    'B': [('A', 5), ('C', 2), ('D', 1)],
    'C': [('A', 1), ('B', 2), ('D', 4)],
    'D': [('B', 1), ('C', 4)]
}
result = minimum_spanning_tree(graph)
print("最小生成樹的頂點(diǎn)集合:", result)

通過本文對拓?fù)渑判?、字符串匹配算法和最小生成樹的詳?xì)介紹,以及相應(yīng)的示例代碼和應(yīng)用場景,相信讀者能夠更好地理解和掌握這些重要的數(shù)據(jù)結(jié)構(gòu)和算法。在實(shí)際的編程和問題解決中,根據(jù)具體的需求選擇合適的算法和數(shù)據(jù)結(jié)構(gòu),將其靈活應(yīng)用,從而提高程序的效率和性能。希望本文對你的學(xué)習(xí)和實(shí)踐有所幫助!

到此這篇關(guān)于Python實(shí)現(xiàn)經(jīng)典算法拓?fù)渑判?、字符串匹配算法和最小生成樹?shí)例的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)經(jīng)典算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決windows下命令行執(zhí)行python3失效,會打開應(yīng)用商店問題

    解決windows下命令行執(zhí)行python3失效,會打開應(yīng)用商店問題

    這篇文章主要介紹了解決windows下命令行執(zhí)行python3失效,會打開應(yīng)用商店問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python實(shí)現(xiàn)字典的點(diǎn)號取值的三種常用方式

    Python實(shí)現(xiàn)字典的點(diǎn)號取值的三種常用方式

    這篇文章主要介紹了在Python中通過自定義類實(shí)現(xiàn)字典的點(diǎn)號取值(dict.key語法)的三種方案,并對比了它們的關(guān)鍵特性、適用場景和使用建議,需要的朋友可以參考下
    2026-01-01
  • Python eval函數(shù)的實(shí)現(xiàn)

    Python eval函數(shù)的實(shí)現(xiàn)

    這篇文章主要介紹了Python eval函數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • matplotlib繪制多子圖共享鼠標(biāo)光標(biāo)的方法示例

    matplotlib繪制多子圖共享鼠標(biāo)光標(biāo)的方法示例

    這篇文章主要介紹了matplotlib繪制多子圖共享鼠標(biāo)光標(biāo)的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python讀文件逐行處理的示例代碼分享

    python讀文件逐行處理的示例代碼分享

    python讀文件逐行處理的示例代碼分享,大家參考使用吧
    2013-12-12
  • 淺談Python中進(jìn)程的創(chuàng)建與結(jié)束

    淺談Python中進(jìn)程的創(chuàng)建與結(jié)束

    這篇文章主要介紹了淺談Python中進(jìn)程的創(chuàng)建與結(jié)束,但凡是硬件,都需要有操作系統(tǒng)去管理,只要有操作系統(tǒng),就有進(jìn)程的概念,就需要有創(chuàng)建進(jìn)程的方式,需要的朋友可以參考下
    2023-07-07
  • python模塊之paramiko實(shí)例代碼

    python模塊之paramiko實(shí)例代碼

    這篇文章主要介紹了python模塊之paramiko,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Django使用中間件解決前后端同源策略問題

    Django使用中間件解決前后端同源策略問題

    這篇文章主要介紹了Django使用中間件解決前后端同源策略問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python創(chuàng)建文件備份的腳本

    python創(chuàng)建文件備份的腳本

    這篇文章主要介紹了python創(chuàng)建文件備份的腳本,非常不錯,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • python opencv通過按鍵采集圖片源碼

    python opencv通過按鍵采集圖片源碼

    OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上,本文給大家分享python opencv通過按鍵采集圖片源碼,感興趣的朋友一起看看吧
    2021-05-05

最新評論

澄城县| 邵武市| 阿勒泰市| 五原县| 桂东县| 连平县| 廉江市| 唐河县| 清远市| 南康市| 遵义市| 沾益县| 乡城县| 敦化市| 南漳县| 德兴市| 甘孜县| 瑞金市| 青龙| 柳江县| 岳西县| 西乌珠穆沁旗| 新龙县| 永州市| 台北县| 益阳市| 黑河市| 安新县| 日土县| 尤溪县| 黄大仙区| 太白县| 休宁县| 长寿区| 南城县| 伊宁市| 建瓯市| 永川市| 绥江县| 洞头县| 余干县|