行走在广东 看潮连古渡风光依旧

        潮门古渡昔日风光仍可想见


  汽车一开上潮连岛,就可以看到堤岸边的西江水,浩浩淼淼绕过潮连岛注入大海,兜着岛上开一圈,四面环水,潮汐相连,村民说这就是潮连岛名字的由来。

  洪圣公园是潮连岛上最有名的古迹了。未进公园,门口的一处古老石级吏引起了我的注意,这里叫潮门古渡,据说还是广东第二大的埠头。我们去到的时候非常安静,昔日熙熙攘攘的商贸来往,都随风飘逝在历史长河中了。据说潮连岛在上世纪民国时期,有众多的人外出谋生,当时最兴盛的时候有7个渡口,村民从这远渡重洋,江门的侨乡历史在这也能略窥一斑。


   洪圣公园岭南园林中有四百年古庙


  步入洪圣公园,庭院小巧但建筑考究,小桥流水、亭台楼榭一派岭南园林风光,“洪圣殿”是其中的主体建筑,建于明代万历28年的古庙,至今已有400多年历史,里面供奉着洪圣龙王。历史虽然悠久,但是里面的观音殿与六祖庙都颇为崭新,或许是重修过的原因。村民说,逢每年观音诞、六祖诞,观音开库、还库之时,不仅本地人挤破脑袋,四方香客都来上香,园内一时非常喧闹,人潮涌动。

  潮连岛上的大道马路修葺良好,不比其他的古村落,这里的马路笔直,而且能看到不少骑着自行车游玩的人,不少人还在沙滩上玩足球、排球,一家人其乐融融。我们把车开上西江的堤岸上,远眺银色沙滩,看碧水阔江从眼前流过,颇有些不知归的意味。


   宗祠连片,古建筑比比皆是叹为观止


  在岛内游逛,我们惊讶于此处的宗祠数量之多,仅以位于卢边社区的“祠堂一条街”为例,虽不过2000来米长,但现存的祠堂有9座。这里还能看到潮连最大、历史最久的卢氏宗祠,已有500多年历史。奉旨修建的封圻家庙内还有一块署名慈禧太后御笔“福寿如意”匾额。

  在潮连岛的6个社区中,每个社区都有这样的祠堂一条街。祠堂内诸多古建筑及各种灰雕木雕都保存良好。据说潮连岛上建祠曾达128间之多,如今60多座宗祠也有不少后人在维护。


  位于卢边社区的名宦家庙是我们见到的印象最深的宗祠,这里的木雕规模庞大,而且保存良好。名宦家庙为三进式建筑,前、中座为庙堂式建筑,后座为庭院式二层楼建筑,家庙内的木、砖、石、灰雕塑都非常精致,四柱穿斗式梁家上有多达四层的木雕,这在广东的宗祠里也是少见的。庭院走廊垂梁上,皆是各式碎花造型木雕,阳光照射下反射着厚重朴实的光芒。


   旅游贴士


  自驾:广深高速-佛开高速陈山出口下高速-进入迎宾大道-直行到潮连大桥下右转-上潮连大桥到潮连岛。

  美食:潮连的烧鹅在当地是很有名的,还有用西江河鲜炮制的美味,都让人食指大动。尤其是在西江一带,有各类海鲜大排档,这里以海鲜、河鲜出名,还有潮连出了名的鱼饼、乳鸽、烧鹅等特色饮食。
一、最少花费路线问题 为了解决这个问题,我们可以使用贪心算法,每次选择距离当前位置最近的未被访问过的景点,直到所有景点都被访问过。 首先,我们需要将所有景点的经纬度坐标存储在一个字典中,然后计算出每两个景点之间的距离。这可以使用经纬度计算公式(如haversine公式)来实现。 接着,我们可以使用一个列表来记录已经访问过的景点,以及一个字典来记录每个景点的费用。然后从起点开始,每次找到距离当前位置最近的未被访问过的景点,并将其加入到已访问列表中,并累加所需的费用。 最后,输出旅游路线和总费用即可。 代码示例: ```python import math # 景点经纬度坐标 locations = { '沙湖': (38.487099, 106.155481), '西夏王陵': (38.466320, 106.130647), '贺兰山岩画': (38.496648, 106.297815), '黄沙古渡旅游区': (38.222789, 105.928023), '北武当生态旅游区': (38.973315, 106.316145), '沙坡头': (37.508221, 105.181056), '寺口子': (37.492356, 105.155761), '青铜峡黄河大峡谷': (37.763865, 105.981294), '哈巴胡生态旅游区': (37.686578, 106.251312), '须弥山石窟': (36.031307, 106.201014), '六盘山': (35.550419, 105.694435), '老龙潭': (36.019286, 106.198785), '火石寨': (36.033351, 106.220259) } # 景点之间的距离 distances = {} for source, source_loc in locations.items(): for target, target_loc in locations.items(): if source != target and (target, source) not in distances: lat1, lon1 = source_loc lat2, lon2 = target_loc radius = 6371 # 地球半径,单位为公里 dlat = math.radians(lat2 - lat1) dlon = math.radians(lon2 - lon1) a = math.sin(dlat / 2) * math.sin(dlat / 2) + math.cos(math.radians(lat1)) \ * math.cos(math.radians(lat2)) * math.sin(dlon / 2) * math.sin(dlon / 2) c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) distance = radius * c distances[(source, target)] = distance distances[(target, source)] = distance # 景点费用 costs = { '沙湖': 100, '西夏王陵': 50, '贺兰山岩画': 80, '黄沙古渡旅游区': 60, '北武当生态旅游区': 120, '沙坡头': 40, '寺口子': 50, '青铜峡黄河大峡谷': 100, '哈巴胡生态旅游区': 80, '须弥山石窟': 30, '六盘山': 40, '老龙潭': 50, '火石寨': 30 } # 贪心算法求解 visited = ['银川'] total_cost = 0 while len(visited) < len(locations): best_dist = float('inf') best_place = None for place in locations: if place not in visited: dist = distances[(visited[-1], place)] if dist < best_dist: best_dist = dist best_place = place visited.append(best_place) total_cost += costs[best_place] # 输出结果 print('旅游路线:', ' -> '.join(visited)) print('总费用:', total_cost) ``` 二、最少时间路线问题 为了解决这个问题,我们可以使用动态规划算法。首先,我们需要将所有景点的经纬度坐标存储在一个字典中,然后计算出每两个景点之间的距离。 接着,我们可以使用一个二维的动态规划数组dp[i][j],其中i表示当前访问的景点数量(初始为1),j表示当前在哪个景点(初始为起点)。 动态规划的状态转移方程为:dp[i][j] = min(dp[i-1][k] + distances[(k, j)]),其中k表示上一个访问的景点,distances[(k, j)]表示从k到j的距离。 最终,我们只需要找到dp[10][j]中最小的值,即为最少时间路线所对应的起点。然后从该起点开始,依次按照dp[i][j]的值进行访问即可。 代码示例: ```python # 景点经纬度坐标 locations = { '沙湖': (38.487099, 106.155481), '西夏王陵': (38.466320, 106.130647), '贺兰山岩画': (38.496648, 106.297815), '黄沙古渡旅游区': (38.222789, 105.928023), '北武当生态旅游区': (38.973315, 106.316145), '沙坡头': (37.508221, 105.181056), '寺口子': (37.492356, 105.155761), '青铜峡黄河大峡谷': (37.763865, 105.981294), '哈巴胡生态旅游区': (37.686578, 106.251312), '须弥山石窟': (36.031307, 106.201014), '六盘山': (35.550419, 105.694435), '老龙潭': (36.019286, 106.198785), '火石寨': (36.033351, 106.220259) } # 景点之间的距离 distances = {} for source, source_loc in locations.items(): for target, target_loc in locations.items(): if source != target and (target, source) not in distances: lat1, lon1 = source_loc lat2, lon2 = target_loc radius = 6371 # 地球半径,单位为公里 dlat = math.radians(lat2 - lat1) dlon = math.radians(lon2 - lon1) a = math.sin(dlat / 2) * math.sin(dlat / 2) + math.cos(math.radians(lat1)) \ * math.cos(math.radians(lat2)) * math.sin(dlon / 2) * math.sin(dlon / 2) c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) distance = radius * c distances[(source, target)] = distance # 动态规划求解 dp = [[float('inf')] * len(locations) for _ in range(11)] for j in range(len(locations)): dp[1][j] = 0 for i in range(2, 11): for j in range(len(locations)): for k in range(len(locations)): if k != j: dp[i][j] = min(dp[i][j], dp[i-1][k] + distances[(k, j)]) # 找到最少时间路线的起点 best_start = None best_time = float('inf') for j in range(len(locations)): if dp[10][j] < best_time: best_time = dp[10][j] best_start = j # 输出结果 visited = [] cur_place = best_start for i in range(10, 0, -1): visited.append(cur_place) for j in range(len(locations)): if j != cur_place and dp[i-1][j] + distances[(j, cur_place)] == dp[i][cur_place]: cur_place = j break visited.append(cur_place) visited.reverse() print('旅游路线:', ' -> '.join([list(locations.keys())[i] for i in visited])) print('总时间:', best_time / 60, '小时') ``` 三、最少费用路线问题 为了解决这个问题,我们可以使用深度优先搜索算法。首先,我们需要将所有景点的经纬度坐标存储在一个字典中,然后计算出每两个景点之间的距离。 接着,我们可以使用一个列表来记录已经访问过的景点,以及一个字典来记录每个景点的费用。然后从起点开始,进行深度优先搜索,每次选择距离当前位置最近的未被访问过的景点,并将其加入到已访问列表中,并累加所需的费用。 每次搜索时,我们需要判断当前的费用是否已经超过了限制,如果超过了则回溯。如果所有的景点都被访问过,则更新最优路线和最小费用。 最后,输出最优路线和最小费用即可。 代码示例: ```python # 景点经纬度坐标 locations = { '沙湖': (38.487099, 106.155481), '西夏王陵': (38.466320, 106.130647), '贺兰山岩画': (38.496648, 106.297815), '黄沙古渡旅游区': (38.222789, 105.928023), '北武当生态旅游区': (38.973315, 106.316145), '沙坡头': (37.508221, 105.181056), '寺口子': (37.492356, 105.155761), '青铜峡黄河大峡谷': (37.763865, 105.981294), '哈巴胡生态旅游区': (37.686578, 106.251312), '须弥山石窟': (36.031307, 106.201014), '六盘山': (35.550419, 105.694435), '老龙潭': (36.019286, 106.198785), '火石寨': (36.033351, 106.220259) } # 景点之间的距离 distances = {} for source, source_loc in locations.items(): for target, target_loc in locations.items(): if source != target and (target, source) not in distances: lat1, lon1 = source_loc lat2, lon2 = target_loc radius = 6371 # 地球半径,单位为公里 dlat = math.radians(lat2 - lat1) dlon = math.radians(lon2 - lon1) a = math.sin(dlat / 2) * math.sin(dlat / 2) + math.cos(math.radians(lat1)) \ * math.cos(math.radians(lat2)) * math.sin(dlon / 2) * math.sin(dlon / 2) c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) distance = radius * c distances[(source, target)] = distance # 景点费用 costs = { '沙湖': 100, '西夏王陵': 50, '贺兰山岩画': 80, '黄沙古渡旅游区': 60, '北武当生态旅游区': 120, '沙坡头': 40, '寺口子': 50, '青铜峡黄河大峡谷': 100, '哈巴胡生态旅游区': 80, '须弥山石窟': 30, '六盘山': 40, '老龙潭': 50, '火石寨': 30 } # 深度优先搜索求解 best_route = None min_cost = float('inf') def dfs(cur_place, visited, cur_cost): global best_route, min_cost if len(visited) == len(locations): if cur_cost < min_cost: best_route = visited[:] min_cost = cur_cost return for place in locations: if place not in visited: dist = distances[(cur_place, place)] cost = costs[place] if cur_cost + cost > 2500: continue visited.append(place) dfs(place, visited, cur_cost + cost) visited.pop() dfs('银川', ['银川'], 0) # 输出结果 print('旅游路线:', ' -> '.join(best_route)) print('总费用:', min_cost) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值